home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-cat-genericsec-03.txt < prev    next >
Text File  |  1993-03-03  |  127KB  |  3,072 lines

  1.  
  2.  
  3.  
  4.  
  5.                Generic Security Service API: Internet-Draft: November 1992
  6.                       Common Authentication Technology WG: John Linn (DEC)
  7.  
  8.  
  9.                                       John Linn
  10.                      Networking and Communications Architecture
  11.                             Digital Equipment Corporation
  12.                              550 King Street, LKG1-2/A19
  13.                                  Littleton, MA 01460
  14.                               Linn@erlang.enet.dec.com
  15.  
  16.           STATUS OF THIS MEMO
  17.  
  18.           This document is an Internet Draft. Internet Drafts are working
  19.           documents of the Internet Engineering Task Force (IETF), its
  20.           Areas, and its Working Groups. Note that other groups may also
  21.           distribute working documents as Internet Drafts.
  22.  
  23.           Internet Drafts are draft documents valid for a maximum of six
  24.           months. Internet Drafts may be updated, replaced, or obsoleted
  25.           by other documents at any time. It is not appropriate to use
  26.           Internet Drafts as reference material or to cite them other than
  27.           as a "working draft" or "work in progress."
  28.  
  29.           Please check the I-D abstract listing contained in each Internet
  30.           Draft directory to learn the current status of this or any other
  31.           Internet Draft.
  32.  
  33.           Comments on this document should be sent to "cat-ietf@mit.edu",
  34.           the IETF Common Authentication Technology WG discussion list.
  35.  
  36.           1  GSS-API Characteristics and Concepts
  37.  
  38.           This Generic Security Service Application Program Interface
  39.           (GSS-API) definition provides security services to callers
  40.           in a generic fashion, supportable with a range of underlying
  41.           mechanisms and technologies and hence allowing source-level
  42.           portability of applications to different environments. This
  43.           specification defines GSS-API services and primitives at a level
  44.           independent of underlying mechanism and programming language
  45.           environment, and is to be complemented by other, related speci-
  46.           fications:
  47.  
  48.                                        Document Expiration: 31 May 1993  1
  49.  
  50.  
  51.  
  52.  
  53.           Generic Security Service API: Internet-Draft: November 1992
  54.           Common Authentication Technology WG: John Linn (DEC)
  55.  
  56.  
  57.           o  documents defining specific parameter bindings for particular
  58.              language environments
  59.  
  60.           o  documents defining token formats, protocols, and procedures
  61.              to be implemented in order to realize GSS-API services atop
  62.              particular security mechanisms
  63.  
  64.  
  65.           The operational paradigm in which GSS-API operates (also sum-
  66.           marized in Figure 1 in the graphic version of this document)
  67.           is as follows. A typical GSS-API caller is itself a communi-
  68.           cations protocol, calling on GSS-API in order to protect its
  69.           communications with authentication, integrity, and/or confi-
  70.           dentiality security services. A GSS-API caller accepts tokens
  71.           provided to it by its local GSS-API implementation and trans-
  72.           fers the tokens to a peer on a remote system; that peer passes
  73.           the received tokens to its local GSS-API implementation for
  74.           processing. The security services available through GSS-API
  75.           in this fashion are implementable (and have been implemented)
  76.           over a range of underlying mechanisms based on secret-key and
  77.           public-key cryptographic technologies.
  78.  
  79.           The GSS-API separates the operations of initializing a security
  80.           context between peers, achieving peer entity authentication[1]
  81.           (GSS_Init_sec_context()  and GSS_Accept_sec_context() calls),
  82.           from the operations of providing per-message data origin au-
  83.           thentication and data integrity protection (GSS_Sign()  and GSS_
  84.           Verify()  calls) for messages subsequently transferred in con-
  85.           junction with that context. Per-message GSS_Seal()  and GSS_
  86.           Unseal()  calls provide the data origin authentication and data
  87.           integrity services which GSS_Sign()  and GSS_Verify() offer, and
  88.           also support selection of confidentiality services as a caller
  89.  
  90.  
  91.           ___________________
  92.         [1] This security service definition, and other definitions used
  93.             in this document, corresponds to that provided in Interna-
  94.             tional Standard ISO 7498-2-1988(E), Security Architecture.
  95.  
  96.  
  97.           2  Document Expiration: 31 May 1993
  98.  
  99.  
  100.  
  101.  
  102.                Generic Security Service API: Internet-Draft: November 1992
  103.                       Common Authentication Technology WG: John Linn (DEC)
  104.  
  105.  
  106.           option. Additional calls provide supportive functions to the
  107.           GSS-API's users.
  108.  
  109.           In the graphic version of this document, Figure 2 illustrates
  110.           the dataflows involved in use of the GSS-API by a client and
  111.           server in a mechanism-independent fashion, establishing a secu-
  112.           rity context and transferring a protected message. The example
  113.           assumes that credential acquisition has already been completed.
  114.           Only a subset of parameter and result values are illustrated,
  115.           for reasons of clarity in exposition. Further, it is assumed
  116.           that the underlying authentication technology is capable of au-
  117.           thenticating a client to a server using elements carried within
  118.           a single token, and of authenticating the server to the client
  119.           (mutual authentication) with a single returned token; this as-
  120.           sumption holds for presently-documented CAT mechanisms but is
  121.           not necessarily true for other cryptographic technologies and
  122.           associated protocols.
  123.  
  124.           The client calls GSS_Init_sec_context()  to establish a security
  125.           context to the server identified by targ_name, and elects to
  126.           set the mutual_req_flag so that mutual authentication is per-
  127.           formed in the course of context establishment. GSS_Init_sec_
  128.           context()  returns an output_token to be passed to the server,
  129.           and indicates GSS_CONTINUE_NEEDED status pending completion of
  130.           the mutual authentication sequence. Had mutual_req_flag not been
  131.           set, the initial call to GSS_Init_sec_context()  would have re-
  132.           turned GSS_COMPLETE status. The client sends the output_token to
  133.           the server.
  134.  
  135.           The server passes the received token as the input_token pa-
  136.           rameter to GSS_Accept_sec_context().  GSS_Accept_sec_context
  137.           indicates GSS_COMPLETE status, provides the client's authenti-
  138.           cated identity in the src_name result, and provides an output_
  139.           token to be passed to the client. The server sends the output_
  140.           token to the client.
  141.  
  142.  
  143.  
  144.  
  145.                                        Document Expiration: 31 May 1993  3
  146.  
  147.  
  148.  
  149.  
  150.           Generic Security Service API: Internet-Draft: November 1992
  151.           Common Authentication Technology WG: John Linn (DEC)
  152.  
  153.  
  154.           The client passes the received token as the input_token pa-
  155.           rameter to a successor call to GSS_Init_sec_context(),  which
  156.           processes data included in the token in order to achieve mu-
  157.           tual authentication from the client's viewpoint. This call to
  158.           GSS_Init_sec_context()  returns GSS_COMPLETE status, indicating
  159.           successful mutual authentication and the completion of context
  160.           establishment for this example.
  161.  
  162.           The client generates a data message and passes it to GSS_
  163.           Seal().  GSS_Seal() performs data origin authentication, data
  164.           integrity, and (optionally) confidentiality processing on the
  165.           message and encapsulates the result into output_message, indi-
  166.           cating GSS_COMPLETE status. The client sends the output_message
  167.           to the server.
  168.  
  169.           The server passes the received message to GSS_Unseal().  GSS_
  170.           Unseal inverts the encapsulation performed by GSS_Seal(),  de-
  171.           ciphers the message if the optional confidentiality feature was
  172.           applied, and validates the data origin authentication and data
  173.           integrity checking quantities. GSS_Unseal()  indicates success-
  174.           ful validation by returning GSS_COMPLETE status along with the
  175.           resultant output_message.
  176.  
  177.           For purposes of this example, we assume that the server knows
  178.           by out-of-band means that this context will have no further
  179.           use after one protected message is transferred from client to
  180.           server. Given this premise, the server now calls GSS_Delete_sec_
  181.           context()  to flush context-level information. GSS_Delete_sec_
  182.           context returns a context_token for the server to pass to the
  183.           client.
  184.  
  185.           The client passes the returned context_token to GSS_Process_
  186.           context_token(),  which returns GSS_COMPLETE status after delet-
  187.           ing context-level information at the client system.
  188.  
  189.           The GSS-API design assumes and addresses several basic goals,
  190.           including:
  191.  
  192.           o  Mechanism independence: The GSS-API defines an interface
  193.              to cryptographically implemented strong authentication and
  194.  
  195.           4  Document Expiration: 31 May 1993
  196.  
  197.  
  198.  
  199.  
  200.                Generic Security Service API: Internet-Draft: November 1992
  201.                       Common Authentication Technology WG: John Linn (DEC)
  202.  
  203.  
  204.              other security services at a generic level which is inde-
  205.              pendent of particular underlying mechanisms. For example,
  206.              GSS-API-provided services can be implemented by secret-key
  207.              technologies (e.g., Kerberos) or public-key approaches (e.g.,
  208.              X.509).
  209.  
  210.           o  Protocol environment independence: The GSS-API is indepen-
  211.              dent of the communications protocol suites with which it is
  212.              employed, permitting use in a broad range of protocol en-
  213.              vironments. In appropriate environments, an intermediate
  214.              implementation "veneer" which is oriented to a particular
  215.              communication protocol (e.g., Remote Procedure Call (RPC))
  216.              may be interposed between applications which call that proto-
  217.              col and the GSS-API, thereby invoking GSS-API facilities in
  218.              conjunction with that protocol's communications invocations.
  219.  
  220.           o  Protocol association independence: The GSS-API's security
  221.              context construct is independent of communications protocol
  222.              association constructs. This characteristic allows a single
  223.              GSS-API implementation to be utilized by a variety of in-
  224.              voking protocol modules on behalf of those modules' calling
  225.              applications. GSS-API services can also be invoked directly
  226.              by applications, wholly independent of protocol associations.
  227.  
  228.           o  Suitability to a range of implementation placements: GSS-
  229.              API clients are not constrained to reside within any Trusted
  230.              Computing Base (TCB) perimeter defined on a system where the
  231.              GSS-API is implemented; security services are specified in a
  232.              manner suitable to both intra-TCB and extra-TCB callers.
  233.  
  234.           1.1  GSS-API Constructs
  235.  
  236.           This section describes the basic elements comprising the GSS-
  237.           API.
  238.  
  239.  
  240.  
  241.  
  242.  
  243.                                        Document Expiration: 31 May 1993  5
  244.  
  245.  
  246.  
  247.  
  248.           Generic Security Service API: Internet-Draft: November 1992
  249.           Common Authentication Technology WG: John Linn (DEC)
  250.  
  251.  
  252.           1.1.1  Credentials
  253.  
  254.           Credentials structures provide the prerequisites enabling peers
  255.           to establish security contexts with each other. A caller may
  256.           designate that its default credential be used for context es-
  257.           tablishment calls without presenting an explicit handle to that
  258.           credential. Alternately, those GSS-API callers which need to
  259.           make explicit selection of particular credentials structures may
  260.           make references to those credentials through GSS-API-provided
  261.           credential handles ("cred_handles").
  262.  
  263.           A single credential structure may be used for initiation of
  264.           outbound contexts and acceptance of inbound contexts. Callers
  265.           needing to operate in only one of these modes may designate this
  266.           fact when credentials are acquired for use, allowing underlying
  267.           mechanisms to optimize their processing and storage require-
  268.           ments. The credential elements defined by a particular mechanism
  269.           may contain multiple cryptographic keys, e.g., to enable authen-
  270.           tication and message encryption to be performed with different
  271.           algorithms.
  272.  
  273.           A single credential structure may accommodate credential in-
  274.           formation associated with multiple underlying mechanisms (mech_
  275.           types); a credential structure's contents will vary depending
  276.           on the set of mech_types supported by a particular GSS-API im-
  277.           plementation. Commonly, a single mech_type will be used for all
  278.           security contexts established by a particular initiator to a
  279.           particular target; the primary motivation for supporting cre-
  280.           dential sets representing multiple mech_types is to allow ini-
  281.           tiators on systems which are equipped to handle multiple types
  282.           to initiate contexts to targets on other systems which can ac-
  283.           commodate only a subset of the set supported at the initiator's
  284.           system.
  285.  
  286.           It is the responsibility of underlying system-specific mech-
  287.           anisms and OS functions below the GSS-API to ensure that the
  288.           ability to acquire and use credentials associated with a given
  289.  
  290.  
  291.           6  Document Expiration: 31 May 1993
  292.  
  293.  
  294.  
  295.  
  296.                Generic Security Service API: Internet-Draft: November 1992
  297.                       Common Authentication Technology WG: John Linn (DEC)
  298.  
  299.  
  300.           identity is constrained to appropriate processes within a sys-
  301.           tem. This responsibility should be taken seriously by implemen-
  302.           tors, as the ability for an entity to utilize a principal's cre-
  303.           dentials is equivalent to the entity's ability to successfully
  304.           assert that principal's identity.
  305.  
  306.           Once a set of GSS-API credentials is established, the transfer-
  307.           ability of that credentials set to other processes or analogous
  308.           constructs within a system is a local matter, not defined by the
  309.           GSS-API. An example local policy would be one in which any cre-
  310.           dentials received as a result of login to a given user account,
  311.           or of delegation of rights to that account, are accessible by,
  312.           or transferable to, processes running under that account.
  313.  
  314.           The credential establishment process (particularly when per-
  315.           formed on behalf of users rather than server processes) is
  316.           likely to require access to passwords or other quantities which
  317.           should be protected locally and exposed for the shortest time
  318.           possible. As a result, it will often be appropriate for pre-
  319.           liminary credential establishment to be performed through local
  320.           means at user login time, with the result(s) cached for sub-
  321.           sequent reference. These preliminary credentials would be set
  322.           aside (in a system-specific fashion) for subsequent use, either:
  323.  
  324.           o  to be accessed by an invocation of the GSS-API GSS_Acquire_
  325.              cred()  call, returning an explicit handle to reference that
  326.              credential
  327.  
  328.           o  as the default credentials installed on behalf of a process
  329.  
  330.           1.1.2  Tokens
  331.  
  332.           Tokens are data elements transferred between GSS-API callers,
  333.           and are divided into two classes. Context-level tokens are ex-
  334.           changed in order to establish and manage a security context
  335.           between peers. Per-message tokens are exchanged in conjunction
  336.           with an established context to provide protective security ser-
  337.           vices for corresponding data messages. The internal contents of
  338.           both classes of tokens are specific to the particular underlying
  339.  
  340.                                        Document Expiration: 31 May 1993  7
  341.  
  342.  
  343.  
  344.  
  345.           Generic Security Service API: Internet-Draft: November 1992
  346.           Common Authentication Technology WG: John Linn (DEC)
  347.  
  348.  
  349.           mechanism used to support the GSS-API; Appendix B of this docu-
  350.           ment provides a uniform recommendation for designers of GSS-API
  351.           support mechanisms, encapsulating mechanism-specific information
  352.           along with a globally-interpretable mechanism identifier.
  353.  
  354.           Tokens are opaque from the viewpoint of GSS-API callers. They
  355.           are generated within the GSS-API implementation at an end sys-
  356.           tem, provided to a GSS-API caller to be transferred to the peer
  357.           GSS-API caller at a remote end system, and processed by the
  358.           GSS-API implementation at that remote end system. Tokens may
  359.           be output by GSS-API primitives (and are to be transferred to
  360.           GSS-API peers) independent of the status indications which those
  361.           primitives indicate. Token transfer may take place in an in-band
  362.           manner, integrated into the same protocol stream used by the
  363.           GSS-API callers for other data transfers, or in an out-of-band
  364.           manner across a logically separate channel.
  365.  
  366.           Development of GSS-API support primitives based on a partic-
  367.           ular underlying cryptographic technique and protocol does not
  368.           necessarily imply that GSS-API callers invoking that GSS-API
  369.           mechanism type will be able to interoperate with peers invoking
  370.           the same technique and protocol outside the GSS-API paradigm.
  371.           For example, the format of GSS-API tokens defined in conjunc-
  372.           tion with a particular mechanism, and the techniques used to
  373.           integrate those tokens into callers' protocols, may not be the
  374.           same as those used by non-GSS-API callers of the same underlying
  375.           technique.
  376.  
  377.           1.1.3  Security Contexts
  378.  
  379.           Security contexts are established between peers, using cre-
  380.           dentials established locally in conjunction with each peer or
  381.           received by peers via delegation. Multiple contexts may ex-
  382.           ist simultaneously between a pair of peers, using the same or
  383.           different sets of credentials. Coexistence of multiple con-
  384.           texts using different credentials allows graceful rollover when
  385.           credentials expire. Distinction among multiple contexts based
  386.  
  387.  
  388.           8  Document Expiration: 31 May 1993
  389.  
  390.  
  391.  
  392.  
  393.                Generic Security Service API: Internet-Draft: November 1992
  394.                       Common Authentication Technology WG: John Linn (DEC)
  395.  
  396.  
  397.           on the same credentials serves applications by distinguishing
  398.           different message streams in a security sense.
  399.  
  400.           The GSS-API is independent of underlying protocols and address-
  401.           ing structure, and depends on its callers to transport GSS-API-
  402.           provided data elements. As a result of these factors, it is a
  403.           caller responsibility to parse communicated messages, separat-
  404.           ing GSS-API-related data elements from caller-provided data.
  405.           The GSS-API is independent of connection vs. connectionless
  406.           orientation of the underlying communications service.
  407.  
  408.           No correlation between security context and communications
  409.           protocol association is dictated[ 2]. This separation allows
  410.           the GSS-API to be used in a wide range of communications en-
  411.           vironments, and also simplifies the calling sequences of the
  412.           individual calls. In many cases (depending on underlying secu-
  413.           rity protocol, associated mechanism, and availability of cached
  414.           information), the state information required for context setup
  415.           can be sent concurrently with initial signed user data, without
  416.           interposing additional message exchanges.
  417.  
  418.           1.1.4  Mechanism Types
  419.  
  420.           In order to successfully establish a security context with a
  421.           target peer, it is necessary to identify an appropriate underly-
  422.           ing mechanism type (mech_type) which both initiator and target
  423.           peers support. The definition of a mechanism embodies not only
  424.           the use of a particular cryptographic technology (or a hybrid or
  425.           choice among alternative cryptographic technologies), but also
  426.           definition of the syntax and semantics of data element exchanges
  427.           which that mechanism will employ in order to support security
  428.           services.
  429.  
  430.           ___________________
  431.        [ 2] The optional channel binding facility, discussed in Sec-
  432.             tion 1.1.6 of this document, represents an intentional excep-
  433.             tion to this rule, supporting additional protection features
  434.             within GSS-API supporting mechanisms.
  435.  
  436.  
  437.                                        Document Expiration: 31 May 1993  9
  438.  
  439.  
  440.  
  441.  
  442.           Generic Security Service API: Internet-Draft: November 1992
  443.           Common Authentication Technology WG: John Linn (DEC)
  444.  
  445.  
  446.           It is recommended that callers initiating contexts specify the
  447.           "default" mech_type value, allowing system-specific functions
  448.           within or invoked by the GSS-API implementation to select the
  449.           appropriate mech_type, but callers may direct that a particular
  450.           mech_type be employed when necessary.
  451.  
  452.           The means for identifying a shared mech_type to establish a
  453.           security context with a peer will vary in different environments
  454.           and circumstances; examples include (but are not limited to):
  455.  
  456.           o  use of a fixed mech_type, defined by configuration, within an
  457.              environment
  458.  
  459.           o  syntactic convention on a target-specific basis, through
  460.              examination of a target's name
  461.  
  462.           o  lookup of a target's name in a naming service or other
  463.              database in order to identify mech_types supported by that
  464.              target
  465.  
  466.           o  explicit negotiation between GSS-API callers in advance of
  467.              security context setup
  468.  
  469.           When transferred between GSS-API peers, mech_type specifiers
  470.           (per Appendix B, represented as Object Identifiers [3](OIDs))
  471.           serve to qualify the interpretation of associated tokens. Use
  472.           of hierarchically structured OIDs serves to preclude ambiguous
  473.           interpretation of mech_type specifiers. The OID representing the
  474.           DASS MechType, for example, is 1.3.12.2.1011.7.5.
  475.  
  476.  
  477.  
  478.  
  479.           ___________________
  480.         [3] The structure and encoding of Object Identifiers is defined in
  481.             ISO/IEC 8824, "Specification of Abstract Syntax Notation One
  482.             (ASN.1)" and in ISO/IEC 8825, "Specification of Basic Encoding
  483.             Rules for Abstract Syntax Notation One (ASN.1)".
  484.  
  485.  
  486.           10  Document Expiration: 31 May 1993
  487.  
  488.  
  489.  
  490.  
  491.                Generic Security Service API: Internet-Draft: November 1992
  492.                       Common Authentication Technology WG: John Linn (DEC)
  493.  
  494.  
  495.           1.1.5  Naming
  496.  
  497.           The GSS-API avoids prescription of naming structures, treating
  498.           the names transferred across the interface in order to initiate
  499.           and accept security contexts as opaque octet string quantities.
  500.           This approach supports the GSS-API's goal of implementability
  501.           atop a range of underlying security mechanisms, recognizing the
  502.           fact that different mechanisms process and authenticate names
  503.           which are presented in different forms. Generalized services
  504.           offering translation functions among arbitrary sets of naming
  505.           environments are outside the scope of the GSS-API; availability
  506.           and use of local conversion functions to translate among the
  507.           naming formats supported within a given end system is antici-
  508.           pated.
  509.  
  510.           Two distinct classes of name representations are used in con-
  511.           junction with different GSS-API parameters:
  512.  
  513.           o  a printable form (denoted by OCTET STRING), for acceptance
  514.              from and presentation to users; printable name forms are
  515.              accompanied by OID tags identifying the namespace to which
  516.              they correspond
  517.  
  518.           o  an internal form (denoted by INTERNAL NAME), opaque to
  519.              callers and defined by individual GSS-API implementations;
  520.              GSS-API implementations supporting multiple namespace types
  521.              are responsible for maintaining internal tags to disambiguate
  522.              the interpretation of particular names
  523.  
  524.           Tagging of printable names allows GSS-API callers and underlying
  525.           GSS-API mechanisms to disambiguate name types and to determine
  526.           whether an associated name's type is one which they are capable
  527.           of processing, avoiding aliasing problems which could result
  528.           from misinterpreting a name of one type as a name of another
  529.           type.
  530.  
  531.  
  532.  
  533.  
  534.                                       Document Expiration: 31 May 1993  11
  535.  
  536.  
  537.  
  538.  
  539.           Generic Security Service API: Internet-Draft: November 1992
  540.           Common Authentication Technology WG: John Linn (DEC)
  541.  
  542.  
  543.           In addition to providing means for names to be tagged with
  544.           types, this specification defines primitives to support a
  545.           level of naming environment independence for certain calling
  546.           applications. To provide basic services[4] oriented towards
  547.           the requirements of callers which need not themselves interpret
  548.           the internal syntax and semantics of names, GSS-API calls for
  549.           name comparison (GSS_Compare_name()),  human-readable display
  550.           (GSS_Display_name()),  input conversion (GSS_Import_name()), and
  551.           internal name deallocation (GSS_Release_name())  functions are
  552.           defined.
  553.  
  554.           GSS_Import_name()  implementations can, where appropriate, sup-
  555.           port more than one printable syntax corresponding to a given
  556.           namespace (e.g., alternative printable representations for X.500
  557.           Distinguished Names), allowing flexibility for their callers to
  558.           select among alternative representations. GSS_Display_name()
  559.           implementations output a printable syntax selected as appropri-
  560.           ate to their operational environments; this selection is a local
  561.           matter. Callers desiring portability across alternative print-
  562.           able syntaxes should refrain from implementing comparisons based
  563.           on printable name forms and should instead use the GSS_Compare_
  564.           name()  call to determine whether or not one internal-format
  565.           name matches another.
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.           ___________________
  574.         [4] It is anticipated that these proposed GSS-API calls will
  575.             be implemented in many end systems based on system-specific
  576.             name manipulation primitives already extant within those end
  577.             systems; inclusion within the GSS-API is intended to offer
  578.             GSS-API callers a portable means to perform specific opera-
  579.             tions, supportive of authorization and audit requirements, on
  580.             authenticated names.
  581.  
  582.  
  583.           12  Document Expiration: 31 May 1993
  584.  
  585.  
  586.  
  587.  
  588.                Generic Security Service API: Internet-Draft: November 1992
  589.                       Common Authentication Technology WG: John Linn (DEC)
  590.  
  591.  
  592.           1.1.6  Channel Bindings
  593.  
  594.           The GSS-API accommodates the concept of caller-provided channel
  595.           binding ("chan_binding") information, used by GSS-API callers
  596.           to bind the establishment of a security context to relevant
  597.           characteristics (e.g., addresses, transformed representations of
  598.           encryption keys) of the underlying communications channel and of
  599.           protection mechanisms applied to that communications channel.
  600.           Verification by one peer of chan_binding information provided by
  601.           the other peer to a context serves to protect against various
  602.           active attacks. The caller initiating a security context must
  603.           determine the chan_binding values before making the GSS_Init_
  604.           sec_context()  call, and consistent values must be provided
  605.           by both peers to a context. Callers should not assume that
  606.           underlying mechanisms provide confidentiality protection for
  607.           channel binding information.
  608.  
  609.           Use or non-use of the GSS-API channel binding facility is a
  610.           caller option, and GSS-API supporting mechanisms can support
  611.           operation in an environment where NULL channel bindings are
  612.           presented. When non-NULL channel bindings are used, certain
  613.           mechanisms will offer enhanced security value by interpreting
  614.           the bindings' content (rather than simply representing those
  615.           bindings, or signatures computed on them, within tokens) and
  616.           will therefore depend on presentation of specific data in a
  617.           defined format. To this end, agreements among mechanism im-
  618.           plementors are defining[ 5] conventional interpretations for
  619.           the contents of channel binding arguments, including address
  620.           specifiers (with content dependent on communications protocol
  621.           environment) for context initiators and acceptors. In order
  622.           for GSS-API callers to be portable across multiple mechanisms
  623.           and achieve the full security functionality available from each
  624.           mechanism, it is strongly recommended that GSS-API callers pro-
  625.           vide channel bindings consistent with these conventions and
  626.           those of the networking environment in which they operate.
  627.  
  628.           ___________________
  629.        [ 5] These conventions are being incorporated into related
  630.             documents.
  631.  
  632.  
  633.                                       Document Expiration: 31 May 1993  13
  634.  
  635.  
  636.  
  637.  
  638.           Generic Security Service API: Internet-Draft: November 1992
  639.           Common Authentication Technology WG: John Linn (DEC)
  640.  
  641.  
  642.           1.2  GSS-API Features and Issues
  643.  
  644.           This section describes aspects of GSS-API operations, of the
  645.           security services which the GSS-API provides, and provides
  646.           commentary on design issues.
  647.  
  648.           1.2.1  Status Reporting
  649.  
  650.           Each GSS-API call provides two status return values. Major_
  651.           status values provide a mechanism-independent indication of call
  652.           status (e.g., GSS_COMPLETE, GSS_FAILURE, GSS_CONTINUE_NEEDED),
  653.           sufficient to drive normal control flow within the caller in
  654.           a generic fashion. Table 1 summarizes the defined major_status
  655.           return codes in tabular fashion.
  656.  
  657.           ________________________________________________________________
  658.  
  659.           Table_1:__GSS-API_Major_Status_Codes____________________________
  660.  
  661.           FATAL ERROR CODES
  662.  
  663.           GSS_BAD_BINDINGS             channel binding mismatch
  664.  
  665.           GSS_BAD_MECH                 unsupported mechanism requested
  666.  
  667.           GSS_BAD_NAME                 invalid name provided
  668.  
  669.           GSS_BAD_NAMETYPE             name of unsupported type provided
  670.  
  671.           GSS_BAD_STATUS               invalid input status selector
  672.  
  673.           GSS_BAD_SIG                  token had invalid signature
  674.  
  675.           GSS_CONTEXT_EXPIRED          specified security context expired
  676.  
  677.           GSS_CREDENTIALS_EXPIRED      expired credentials detected
  678.  
  679.  
  680.  
  681.           14  Document Expiration: 31 May 1993
  682.  
  683.  
  684.  
  685.  
  686.                Generic Security Service API: Internet-Draft: November 1992
  687.                       Common Authentication Technology WG: John Linn (DEC)
  688.  
  689.           ________________________________________________________________
  690.  
  691.           Table_1_(Cont.):__GSS-API_Major_Status_Codes____________________
  692.  
  693.           GSS_DEFECTIVE_CREDENTIAL     defective credential detected
  694.  
  695.           GSS_DEFECTIVE_TOKEN          defective token detected
  696.  
  697.           GSS_FAILURE                  failure, unspecified at GSS-API
  698.                                        level
  699.  
  700.           GSS_NO_CONTEXT               no valid security context specified
  701.  
  702.           GSS_NO_CRED                  no valid credentials provided
  703.  
  704.           INFORMATORY STATUS CODES
  705.  
  706.           GSS_COMPLETE                 normal completion
  707.  
  708.           GSS_CONTINUE_NEEDED          continuation call to routine re-
  709.                                        quired
  710.  
  711.           GSS_DUPLICATE_TOKEN          duplicate per-message token de-
  712.                                        tected
  713.  
  714.           GSS_OLD_TOKEN                timed-out per-message token de-
  715.                                        tected
  716.  
  717.           GSS_UNSEQ_TOKEN              out-of-order per-message token
  718.           _____________________________detected___________________________
  719.  
  720.           Minor_status provides more detailed status information which may
  721.           include status codes specific to the underlying security mecha-
  722.           nism. Minor_status values are not specified in this document.
  723.  
  724.           GSS_CONTINUE_NEEDED major_status returns, and optional message
  725.           outputs, are provided in GSS_Init_sec_context()  and GSS_Accept_
  726.           sec_context()  calls so that different mechanisms' employment
  727.           of different numbers of messages within their authentication
  728.           sequences need not be reflected in separate code paths within
  729.  
  730.                                       Document Expiration: 31 May 1993  15
  731.  
  732.  
  733.  
  734.  
  735.           Generic Security Service API: Internet-Draft: November 1992
  736.           Common Authentication Technology WG: John Linn (DEC)
  737.  
  738.  
  739.           calling applications. Instead, such cases are accomodated with
  740.           sequences of continuation calls to GSS_Init_sec_context()  and
  741.           GSS_Accept_sec_context().  The same mechanism is used to encap-
  742.           sulate mutual authentication within the GSS-API's context initi-
  743.           ation calls. In the graphic version of this document, Figure 3
  744.           illustrates a GSS-API continuation scenario.
  745.  
  746.  
  747.           For mech_types which require interactions with third-party
  748.           servers in order to establish a security context, GSS-API con-
  749.           text establishment calls may block pending completion of such
  750.           third-party interactions. On the other hand, no GSS-API calls
  751.           pend on serialized interactions with GSS-API peer entities.
  752.           As a result, local GSS-API status returns cannot reflect un-
  753.           predictable or asynchronous exceptions occurring at remote
  754.           peers, and reflection of such status information is a caller
  755.           responsibility outside the GSS-API.
  756.  
  757.           1.2.2  Per-Message Security Service Availability
  758.  
  759.           When a context is established, two flags are returned to indi-
  760.           cate the set of per-message protection security services which
  761.           will be available on the context:
  762.  
  763.           o  the integ_avail flag indicates whether per-message integrity
  764.              and data origin authentication services are available
  765.  
  766.           o  the conf_avail flag indicates whether per-message confiden-
  767.              tiality services are available, and will never be returned
  768.              TRUE unless the integ_avail flag is also returned TRUE
  769.  
  770.           GSS-API callers desiring per-message security services should
  771.           check the values of these flags at context establishment time,
  772.           and must be aware that a returned FALSE value for integ_avail
  773.           means that invocation of GSS_Sign()  or GSS_Seal() primitives on
  774.           the associated context will apply no cryptographic protection to
  775.           user data messages.
  776.  
  777.  
  778.           16  Document Expiration: 31 May 1993
  779.  
  780.  
  781.  
  782.  
  783.                Generic Security Service API: Internet-Draft: November 1992
  784.                       Common Authentication Technology WG: John Linn (DEC)
  785.  
  786.  
  787.           The GSS-API per-message protection service primitives, as the
  788.           category name implies, are oriented to operation at the gran-
  789.           ulatity of protocol data units. They perform cryptographic
  790.           operations on the data units, transfer cryptographic control
  791.           information in tokens, and, in the case of GSS_Seal(),  encap-
  792.           sulate the protected data unit. As such, these primitives are
  793.           not oriented to efficient data protection for stream-paradigm
  794.           protocols (e.g., Telnet) if cryptography must be applied on an
  795.           octet-by-octet basis.
  796.  
  797.           1.2.3  Per-Message Replay Detection and Sequencing
  798.  
  799.           Certain underlying mech_types are expected to offer support for
  800.           replay detection and/or sequencing of messages transferred on
  801.           the contexts they support. These optionally-selectable protec-
  802.           tion features are distinct from replay detection and sequencing
  803.           features applied to the context establishment operation itself;
  804.           the presence or absence of context-level replay or sequencing
  805.           features is wholly a function of the underlying mech_type's
  806.           capabilities, and is not selected or omitted as a caller option.
  807.  
  808.           The caller initiating a context provides flags (replay_det_
  809.           req_flag and sequence_req_flag) to specify whether the use of
  810.           per-message replay detection and sequencing features is desired
  811.           on the context being established. The GSS-API implementation
  812.           at the initiator system can determine whether these features
  813.           are supported (and whether they are optionally selectable) as a
  814.           function of mech_type, without need for bilateral negotiation
  815.           with the target. When enabled, these features provide recipients
  816.           with indicators as a result of GSS-API processing of incoming
  817.           messages, identifying whether those messages were detected as
  818.           duplicates or out-of-sequence. Detection of such events does not
  819.           prevent a suspect message from being provided to a recipient;
  820.           the appropriate course of action on a suspect message is a
  821.           matter of caller policy.
  822.  
  823.  
  824.  
  825.  
  826.                                       Document Expiration: 31 May 1993  17
  827.  
  828.  
  829.  
  830.  
  831.           Generic Security Service API: Internet-Draft: November 1992
  832.           Common Authentication Technology WG: John Linn (DEC)
  833.  
  834.  
  835.           The semantics of the replay detection and sequencing services
  836.           applied to received messages, as visible across the interface
  837.           which the GSS-API provides to its clients, are as follows:
  838.  
  839.           When replay_det_state is TRUE, the possible major_status returns
  840.           for well-formed and correctly signed messages are as follows:
  841.  
  842.           1. GSS_COMPLETE indicates that the message was within the win-
  843.              dow (of time or sequence space) allowing replay events to
  844.              be detected, and that the message was not a replay of a
  845.              previously-processed message within that window.
  846.  
  847.           2. GSS_DUPLICATE_TOKEN indicates that the signature on the re-
  848.              ceived message was correct, but that the message was recog-
  849.              nized as a duplicate of a previously-processed message.
  850.  
  851.           3. GSS_OLD_TOKEN indicates that the signature on the received
  852.              message was correct, but that the message is too old to be
  853.              checked for duplication.
  854.  
  855.           When sequence_state is TRUE, the possible major_status returns
  856.           for well-formed and correctly signed messages are as follows:
  857.  
  858.           1. GSS_COMPLETE indicates that the message was within the win-
  859.              dow (of time or sequence space) allowing replay events to
  860.              be detected, and that the message was not a replay of a
  861.              previously-processed message within that window.
  862.  
  863.           2. GSS_DUPLICATE_TOKEN indicates that the signature on the re-
  864.              ceived message was correct, but that the message was recog-
  865.              nized as a duplicate of a previously-processed message.
  866.  
  867.           3. GSS_OLD_TOKEN indicates that the signature on the received
  868.              message was correct, but that the token is too old to be
  869.              checked for duplication.
  870.  
  871.  
  872.  
  873.  
  874.           18  Document Expiration: 31 May 1993
  875.  
  876.  
  877.  
  878.  
  879.                Generic Security Service API: Internet-Draft: November 1992
  880.                       Common Authentication Technology WG: John Linn (DEC)
  881.  
  882.  
  883.           4. GSS_UNSEQ_TOKEN indicates that the signature on the received
  884.              message was correct, but that it is earlier in a sequenced
  885.              stream [6] than a message already processed on the context.
  886.  
  887.           As the message stream integrity features (especially sequencing)
  888.           may interfere with certain applications' intended communications
  889.           paradigms, and since support for such features is likely to be
  890.           resource intensive, it is highly recommended that mech_types
  891.           supporting these features allow them to be activated selectively
  892.           on initiator request when a context is established. A context
  893.           initiator and target are provided with corresponding indicators
  894.           (replay_det_state and sequence_state), signifying whether these
  895.           features are active on a given context.
  896.  
  897.           An example mech_type supporting per-message replay detection
  898.           could (when replay_det_state is TRUE) implement the feature as
  899.           follows: The underlying mechanism would insert timestamps in
  900.           data elements output by GSS_Sign()  and GSS_Seal(), and would
  901.           maintain (within a time-limited window) a cache (qualified by
  902.           originator-recipient pair) identifying received data elements
  903.           processed by GSS_Verify()  and GSS_Unseal(). When this feature
  904.           is active, exception status returns (GSS_DUPLICATE_TOKEN, GSS_
  905.           OLD_TOKEN) will be provided when GSS_Verify()  or GSS_Unseal()
  906.           is presented with a message which is either a detected duplicate
  907.  
  908.           ___________________
  909.         [6] Mechanisms can be architected to provide a stricter form of
  910.             sequencing service, delivering particular messages to recipi-
  911.             ents only after all predecessor messages in an ordered stream
  912.             have been delivered.  This type of support is incompatible
  913.             with the GSS-API paradigm in which recipients receive all mes-
  914.             sages, whether in order or not, and provide them (one at a
  915.             time, without intra-GSS-API message buffering) to GSS-API rou-
  916.             tines for validation.  GSS-API facilities provide supportive
  917.             functions, aiding clients to achieve strict message stream in-
  918.             tegrity in an efficient manner in conjunction with sequencing
  919.             provisions in communications protocols, but the GSS-API does
  920.             not offer this level of message stream integrity service by
  921.             itself.
  922.  
  923.  
  924.                                       Document Expiration: 31 May 1993  19
  925.  
  926.  
  927.  
  928.  
  929.           Generic Security Service API: Internet-Draft: November 1992
  930.           Common Authentication Technology WG: John Linn (DEC)
  931.  
  932.  
  933.           of a prior message or which is too old to validate against a
  934.           cache of recently received messages.
  935.  
  936.           1.2.4  Quality of Protection
  937.  
  938.           Some mech_types will provide their users with fine granularity
  939.           control over the means used to provide per-message protection,
  940.           allowing callers to trade off security processing overhead dy-
  941.           namically against the protection requirements of particular
  942.           messages. A per-message quality-of-protection parameter (anal-
  943.           ogous to quality-of-service, or QOS) selects among different
  944.           QOP options supported by that mechanism. On context establish-
  945.           ment for a multi-QOP mech_type, context-level data provides the
  946.           prerequisite data for a range of protection qualities.
  947.  
  948.           It is expected that the majority of callers will not wish to
  949.           exert explicit mechanism-specific QOP control and will therefore
  950.           request selection of a default QOP. Definitions of, and choices
  951.           among, non-default QOP values are mechanism-specific, and no
  952.           ordered sequences of QOP values can be assumed equivalent across
  953.           different mechanisms. Meaningful use of non-default QOP values
  954.           demands that callers be familiar with the QOP definitions of
  955.           an underlying mechanism or mechanisms, and is therefore a non-
  956.           portable construct.
  957.  
  958.           2  Interface Descriptions
  959.  
  960.           This section describes the GSS-API's service interface, dividing
  961.           the set of calls offered into four groups. Credential management
  962.           calls are related to the acquisition and release of credentials
  963.           by principals. Context-level calls are related to the management
  964.           of security contexts between principals. Per-message calls are
  965.           related to the protection of individual messages on established
  966.           security contexts. Support calls provide ancillary functions
  967.           useful to GSS-API callers. Table 2 groups and summarizes the
  968.           calls in tabular fashion.
  969.  
  970.  
  971.  
  972.           20  Document Expiration: 31 May 1993
  973.  
  974.  
  975.  
  976.  
  977.                Generic Security Service API: Internet-Draft: November 1992
  978.                       Common Authentication Technology WG: John Linn (DEC)
  979.  
  980.  
  981.           ________________________________________________________________
  982.  
  983.           Table_2:__GSS-API_Calls_________________________________________
  984.  
  985.           CREDENTIAL MANAGEMENT
  986.  
  987.           GSS_Acquire_cred             acquire credentials for use
  988.  
  989.           GSS_Release_cred             release credentials after use
  990.  
  991.           GSS_Inquire_cred             display information about creden-
  992.                                        tials
  993.  
  994.           CONTEXT-LEVEL CALLS
  995.  
  996.           GSS_Init_sec_context         initiate outbound security context
  997.  
  998.           GSS_Accept_sec_context       accept inbound security context
  999.  
  1000.           GSS_Delete_sec_context       flush context when no longer needed
  1001.  
  1002.           GSS_Process_context_token    process received control token on
  1003.                                        context
  1004.  
  1005.           GSS_Context_time             indicate validity time remaining on
  1006.                                        context
  1007.  
  1008.           PER-MESSAGE CALLS
  1009.  
  1010.           GSS_Sign                     apply signature, receive as token
  1011.                                        separate from message
  1012.  
  1013.           GSS_Verify                   validate signature token along with
  1014.                                        message
  1015.  
  1016.           GSS_Seal                     sign, optionally encrypt, encapsu-
  1017.                                        late
  1018.  
  1019.  
  1020.                                       Document Expiration: 31 May 1993  21
  1021.  
  1022.  
  1023.  
  1024.  
  1025.           Generic Security Service API: Internet-Draft: November 1992
  1026.           Common Authentication Technology WG: John Linn (DEC)
  1027.  
  1028.           ________________________________________________________________
  1029.  
  1030.           Table_2_(Cont.):__GSS-API_Calls_________________________________
  1031.  
  1032.           GSS_Unseal                   decapsulate, decrypt if needed,
  1033.                                        validate signature
  1034.  
  1035.           SUPPORT CALLS
  1036.  
  1037.           GSS_Display_status           translate status codes to printable
  1038.                                        form
  1039.  
  1040.           GSS_Indicate_mechs           indicate mech_types supported on
  1041.                                        local system
  1042.  
  1043.           GSS_Compare_name             compare two names for equality
  1044.  
  1045.           GSS_Display_name             translate name to printable form
  1046.  
  1047.           GSS_Import_name              convert printable name to normal-
  1048.                                        ized form
  1049.  
  1050.           GSS_Release_name             free storage of normalized-form
  1051.                                        name
  1052.  
  1053.           GSS_Release_buffer           free storage of printable name
  1054.  
  1055.           GSS_Release_oid_set__________free_storage_of_OID_set_object_____
  1056.  
  1057.  
  1058.           2.1  Credential management calls
  1059.  
  1060.           These GSS-API calls provide functions related to the management
  1061.           of credentials. Their characterization with regard to whether or
  1062.           not they may block pending exchanges with other network entities
  1063.           (e.g., directories or authentication servers) depends in part on
  1064.           OS-specific (extra-GSS-API) issues, so is not specified in this
  1065.           document.
  1066.  
  1067.  
  1068.           22  Document Expiration: 31 May 1993
  1069.  
  1070.  
  1071.  
  1072.  
  1073.                Generic Security Service API: Internet-Draft: November 1992
  1074.                       Common Authentication Technology WG: John Linn (DEC)
  1075.  
  1076.  
  1077.           The GSS_Acquire_cred()  call is defined within the GSS-API in
  1078.           support of application portability, with a particular orien-
  1079.           tation towards support of portable server applications. It is
  1080.           recognized that (for certain systems and mechanisms) creden-
  1081.           tials for interactive users may be managed differently from
  1082.           credentials for server processes; in such environments, it is
  1083.           the GSS-API implementation's responsibility to distinguish these
  1084.           cases and the procedures for making this distinction are a lo-
  1085.           cal matter. The GSS_Release_cred()  call provides a means for
  1086.           callers to indicate to the GSS-API that use of a credentials
  1087.           structure is no longer required. The GSS_Inquire_cred()  call
  1088.           allows callers to determine information about a credentials
  1089.           structure.
  1090.  
  1091.           2.1.1  GSS_Acquire_cred call
  1092.  
  1093.           Inputs:
  1094.  
  1095.           o  desired_name INTERNAL NAME, -NULL requests locally-determined
  1096.              default
  1097.  
  1098.           o  lifetime_req INTEGER,-in seconds; 0 requests default
  1099.  
  1100.           o  desired_mechs SET OF OBJECT IDENTIFIER,-empty set requests
  1101.              system-selected default
  1102.  
  1103.           o  cred_usage INTEGER-0=INITIATE-AND-ACCEPT, 1=INITIATE-ONLY,
  1104.              2=ACCEPT-ONLY
  1105.  
  1106.           Outputs:
  1107.  
  1108.           o  major_status INTEGER,
  1109.  
  1110.           o  minor_status INTEGER,
  1111.  
  1112.           o  output_cred_handle OCTET STRING,
  1113.  
  1114.           o  actual_mechs SET OF OBJECT IDENTIFIER,
  1115.  
  1116.           o  lifetime_rec INTEGER -in seconds, or reserved value for
  1117.              INDEFINITE
  1118.  
  1119.                                       Document Expiration: 31 May 1993  23
  1120.  
  1121.  
  1122.  
  1123.  
  1124.           Generic Security Service API: Internet-Draft: November 1992
  1125.           Common Authentication Technology WG: John Linn (DEC)
  1126.  
  1127.  
  1128.           Return major_status codes:
  1129.  
  1130.           o  GSS_COMPLETE indicates that requested credentials were suc-
  1131.              cessfully established, for the duration indicated in life-
  1132.              time_rec, suitable for the usage requested in cred_usage,
  1133.              for the set of mech_types indicated in actual_mechs, and that
  1134.              those credentials can be referenced for subsequent use with
  1135.              the handle returned in output_cred_handle.
  1136.  
  1137.           o  GSS_BAD_MECH indicates that a mech_type unsupported by the
  1138.              GSS-API implementation type was requested, causing the cre-
  1139.              dential establishment operation to fail.
  1140.  
  1141.           o  GSS_BAD_NAMETYPE indicates that the provided desired_name is
  1142.              uninterpretable or of a type unsupported by the supporting
  1143.              GSS-API implementation, so no credentials could be estab-
  1144.              lished for the accompanying desired_name.
  1145.  
  1146.           o  GSS_BAD_NAME indicates that the provided desired_name is in-
  1147.              consistent in terms of internally-incorporated type specifier
  1148.              information, so no credentials could be established for the
  1149.              accompanying desired_name.
  1150.  
  1151.           o  GSS_FAILURE indicates that credential establishment failed
  1152.              for reasons unspecified at the GSS-API level, including lack
  1153.              of authorization to establish and use credentials associated
  1154.              with the identity named in the input desired_name argument.
  1155.  
  1156.           GSS_Acquire_cred()  is used to acquire credentials so that a
  1157.           principal can (as a function of the input cred_usage parameter)
  1158.           initiate and/or accept security contexts under the identity
  1159.           represented by the desired_name input argument. On successful
  1160.           completion, the returned output_cred_handle result provides a
  1161.           handle for subsequent references to the acquired credentials.
  1162.           Typically, single-user client processes using only default
  1163.           credentials for context establishment purposes will have no
  1164.           need to invoke this call.
  1165.  
  1166.  
  1167.           24  Document Expiration: 31 May 1993
  1168.  
  1169.  
  1170.  
  1171.  
  1172.                Generic Security Service API: Internet-Draft: November 1992
  1173.                       Common Authentication Technology WG: John Linn (DEC)
  1174.  
  1175.  
  1176.           A caller may provide the value NULL for desired_name, signifying
  1177.           a request for credentials corresponding to a default princi-
  1178.           pal identity. The procedures used by GSS-API implementations to
  1179.           select the appropriate principal identity in response to this
  1180.           form of request are local matters. It is possible that multiple
  1181.           pre-established credentials may exist for the same principal
  1182.           identity (for example, as a result of multiple user login ses-
  1183.           sions) when GSS_Acquire_cred()  is called; the means used in
  1184.           such cases to select a specific credential are local matters[7].
  1185.  
  1186.           The lifetime_rec result indicates the length of time for which
  1187.           the acquired credentials will be valid, as an offset from the
  1188.           present. A mechanism may return a reserved value indicating IN-
  1189.           DEFINITE if no constraints on credential lifetime are imposed.
  1190.           A caller of GSS_Acquire_cred()  can request a length of time for
  1191.           which acquired credentials are to be valid (lifetime_req argu-
  1192.           ment), beginning at the present[8], or can request credentials
  1193.           with a default validity interval. Certain mechanisms and im-
  1194.           plementations may bind in credential validity period specifiers
  1195.           at a point preliminary to invocation of the GSS_Acquire_cred()
  1196.           call (e.g., in conjunction with user login procedures). As a
  1197.           result, callers requesting non-default values for lifetime_req
  1198.           must recognize that such requests cannot always be honored and
  1199.           must be prepared to accommodate the use of returned credentials
  1200.           with different lifetimes as indicated in lifetime_rec.
  1201.  
  1202.           The caller of GSS_Acquire_cred()  can explicitly specify a set
  1203.           of mech_types which are to be accommodated in the returned
  1204.           credentials (desired_mechs argument), or can request credentials
  1205.           for a system-defined default set of mech_types. Selection of the
  1206.           system-specified default set is recommended in the interests of
  1207.  
  1208.           ___________________
  1209.         [7] The input lifetime_req argument to GSS_Acquire_cred() may
  1210.             provide useful information for local GSS-API implementations
  1211.             to employ in making this disambiguation in a manner which will
  1212.             best satisfy a caller's intent.
  1213.  
  1214.         [8] Requests for postdated credentials are not supported within
  1215.             the GSS-API.
  1216.  
  1217.  
  1218.                                       Document Expiration: 31 May 1993  25
  1219.  
  1220.  
  1221.  
  1222.  
  1223.           Generic Security Service API: Internet-Draft: November 1992
  1224.           Common Authentication Technology WG: John Linn (DEC)
  1225.  
  1226.  
  1227.           application portability. The actual_mechs return value may be
  1228.           interrogated by the caller to determine the set of mechanisms
  1229.           with which the returned credentials may be used.
  1230.  
  1231.           2.1.2  GSS_Release_cred call
  1232.  
  1233.           Input:
  1234.  
  1235.           o  cred_handle OCTET STRING-NULL specifies default credentials
  1236.  
  1237.           Outputs:
  1238.  
  1239.           o  major_status INTEGER,
  1240.  
  1241.           o  minor_status INTEGER
  1242.  
  1243.           Return major_status codes:
  1244.  
  1245.           o  GSS_COMPLETE indicates that the credentials referenced by the
  1246.              input cred_handle were released for purposes of subsequent
  1247.              access by the caller. The effect on other processes which may
  1248.              be authorized shared access to such credentials is a local
  1249.              matter.
  1250.  
  1251.           o  GSS_NO_CRED indicates that no release operation was per-
  1252.              formed, either because the input cred_handle was invalid or
  1253.              because the caller lacks authorization to access the refer-
  1254.              enced credentials.
  1255.  
  1256.           o  GSS_FAILURE indicates that the release operation failed for
  1257.              reasons unspecified at the GSS-API level.
  1258.  
  1259.           Provides a means for a caller to explicitly request that cre-
  1260.           dentials be released when their use is no longer required. Note
  1261.           that system-specific credential management functions are also
  1262.           likely to exist, for example to assure that credentials shared
  1263.           among processes are properly deleted when all affected processes
  1264.           terminate, even if no explicit release requests are issued by
  1265.           those processes. Given the fact that multiple callers are not
  1266.  
  1267.           26  Document Expiration: 31 May 1993
  1268.  
  1269.  
  1270.  
  1271.  
  1272.                Generic Security Service API: Internet-Draft: November 1992
  1273.                       Common Authentication Technology WG: John Linn (DEC)
  1274.  
  1275.  
  1276.           precluded from gaining authorized access to the same creden-
  1277.           tials, invocation of GSS_Release_cred()  cannot be assumed to
  1278.           delete a particular set of credentials on a system-wide basis.
  1279.  
  1280.           2.1.3  GSS_Inquire_cred call
  1281.  
  1282.           Input:
  1283.  
  1284.           o  cred_handle OCTET STRING-NULL specifies default credentials
  1285.  
  1286.           Outputs:
  1287.  
  1288.           o  major_status INTEGER,
  1289.  
  1290.           o  minor_status INTEGER,
  1291.  
  1292.           o  cred_name INTERNAL NAME,
  1293.  
  1294.           o  lifetime_rec INTEGER-in seconds, or reserved value for INDEF-
  1295.              INITE
  1296.  
  1297.           o  cred_usage INTEGER,-0=INITIATE-AND-ACCEPT, 1=INITIATE-ONLY,
  1298.              2=ACCEPT-ONLY
  1299.  
  1300.           o  mech_set SET OF OBJECT IDENTIFIER
  1301.  
  1302.           Return major_status codes:
  1303.  
  1304.           o  GSS_COMPLETE indicates that the credentials referenced by the
  1305.              input cred_handle argument were valid, and that the output
  1306.              cred_name, lifetime_rec, and cred_usage values represent,
  1307.              respectively, the credentials' associated principal name,
  1308.              remaining lifetime, suitable usage modes, and supported
  1309.              mechanism types.
  1310.  
  1311.           o  GSS_NO_CRED indicates that no information could be returned
  1312.              about the referenced credentials, either because the input
  1313.              cred_handle was invalid or because the caller lacks autho-
  1314.              rization to access the referenced credentials.
  1315.  
  1316.           o  GSS_FAILURE indicates that the release operation failed for
  1317.              reasons unspecified at the GSS-API level.
  1318.  
  1319.                                       Document Expiration: 31 May 1993  27
  1320.  
  1321.  
  1322.  
  1323.  
  1324.           Generic Security Service API: Internet-Draft: November 1992
  1325.           Common Authentication Technology WG: John Linn (DEC)
  1326.  
  1327.  
  1328.           The GSS_Inquire_cred()  call is defined primarily for the use
  1329.           of those callers which make use of default credentials rather
  1330.           than acquiring credentials explicitly with GSS_Acquire_cred().
  1331.           It enables callers to determine a credential structure's asso-
  1332.           ciated principal name, remaining validity period, usability for
  1333.           security context initiation and/or acceptance, and supported
  1334.           mechanisms.
  1335.  
  1336.  
  1337.           2.2  Context-level calls
  1338.  
  1339.           This group of calls is devoted to the establishment and manage-
  1340.           ment of security contexts between peers. A context's initiator
  1341.           calls GSS_Init_sec_context(),  resulting in generation of a to-
  1342.           ken which the caller passes to the target. At the target, that
  1343.           token is passed to GSS_Accept_sec_context().  Depending on the
  1344.           underlying mech_type and specified options, additional token
  1345.           exchanges may be performed in the course of context establish-
  1346.           ment; such exchanges are accommodated by GSS_CONTINUE_NEEDED
  1347.           status returns from GSS_Init_sec_context()  and GSS_Accept_sec_
  1348.           context().  Either party to an established context may invoke
  1349.           GSS_Delete_sec_context()  to flush context information when a
  1350.           context is no longer required. GSS_Process_context_token()  is
  1351.           used to process received tokens carrying context-level control
  1352.           information. GSS_Context_time()  allows a caller to determine
  1353.           the length of time for which an established context will remain
  1354.           valid.
  1355.  
  1356.           2.2.1  GSS_Init_sec_context call
  1357.  
  1358.           Inputs:
  1359.  
  1360.           o  claimant_cred_handle OCTET STRING, -NULL specifies "use
  1361.              default"
  1362.  
  1363.           o  input_context_handle INTEGER, -0 specifies "none assigned
  1364.              yet"
  1365.  
  1366.           o  targ_name INTERNAL NAME,
  1367.  
  1368.           28  Document Expiration: 31 May 1993
  1369.  
  1370.  
  1371.  
  1372.  
  1373.                Generic Security Service API: Internet-Draft: November 1992
  1374.                       Common Authentication Technology WG: John Linn (DEC)
  1375.  
  1376.  
  1377.           o  mech_type OBJECT IDENTIFIER, -NULL parameter specifies "use
  1378.              default"
  1379.  
  1380.           o  deleg_req_flag BOOLEAN,
  1381.  
  1382.           o  mutual_req_flag BOOLEAN,
  1383.  
  1384.           o  replay_det_req_flag BOOLEAN,
  1385.  
  1386.           o  sequence_req_flag BOOLEAN,
  1387.  
  1388.           o  lifetime_req INTEGER,-0 specifies default lifetime
  1389.  
  1390.           o  chan_bindings OCTET STRING,
  1391.  
  1392.           o  input_token OCTET STRING-NULL or token received from target
  1393.  
  1394.           Outputs:
  1395.  
  1396.           o  major_status INTEGER,
  1397.  
  1398.           o  minor_status INTEGER,
  1399.  
  1400.           o  output_context_handle INTEGER,
  1401.  
  1402.           o  mech_type OBJECT IDENTIFIER, -actual mechanism always indi-
  1403.              cated, never NULL
  1404.  
  1405.           o  output_token OCTET STRING, -NULL or token to pass to context
  1406.              target
  1407.  
  1408.           o  deleg_state BOOLEAN,
  1409.  
  1410.           o  mutual_state BOOLEAN,
  1411.  
  1412.           o  replay_det_state BOOLEAN,
  1413.  
  1414.           o  sequence_state BOOLEAN,
  1415.  
  1416.           o  conf_avail BOOLEAN,
  1417.  
  1418.           o  integ_avail BOOLEAN,
  1419.  
  1420.           o  lifetime_rec INTEGER - in seconds, or reserved value for
  1421.              INDEFINITE
  1422.  
  1423.                                       Document Expiration: 31 May 1993  29
  1424.  
  1425.  
  1426.  
  1427.  
  1428.           Generic Security Service API: Internet-Draft: November 1992
  1429.           Common Authentication Technology WG: John Linn (DEC)
  1430.  
  1431.  
  1432.           This call may block pending network interactions for those mech_
  1433.           types in which an authentication server or other network entity
  1434.           must be consulted on behalf of a context initiator in order
  1435.           to generate an output_token suitable for presentation to a
  1436.           specified target.
  1437.  
  1438.           Return major_status codes:
  1439.  
  1440.           o  GSS_COMPLETE indicates that context-level information was
  1441.              successfully initialized, and that the returned output_token
  1442.              will provide sufficient information for the target to perform
  1443.              per-message processing on the newly-established context.
  1444.  
  1445.           o  GSS_CONTINUE_NEEDED indicates that control information in the
  1446.              returned output_token must be sent to the target, and that a
  1447.              reply must be received and passed as the input_token argument
  1448.              to a continuation call to GSS_Init_sec_context(),  before
  1449.              per-message processing can be performed in conjunction with
  1450.              this context.
  1451.  
  1452.           o  GSS_DEFECTIVE_TOKEN indicates that consistency checks per-
  1453.              formed on the input_token failed, preventing further process-
  1454.              ing from being performed based on that token.
  1455.  
  1456.           o  GSS_DEFECTIVE_CREDENTIAL indicates that consistency checks
  1457.              performed on the credential structure referenced by claimant_
  1458.              cred_handle failed, preventing further processing from being
  1459.              performed using that credential structure.
  1460.  
  1461.           o  GSS_BAD_SIG indicates that the received input_token con-
  1462.              tains an incorrect signature, so context setup cannot be
  1463.              accomplished.
  1464.  
  1465.           o  GSS_NO_CRED indicates that no context was established, ei-
  1466.              ther because the input cred_handle was invalid, because the
  1467.              referenced credentials are valid for context acceptor use
  1468.              only, or because the caller lacks authorization to access the
  1469.              referenced credentials.
  1470.  
  1471.           30  Document Expiration: 31 May 1993
  1472.  
  1473.  
  1474.  
  1475.  
  1476.                Generic Security Service API: Internet-Draft: November 1992
  1477.                       Common Authentication Technology WG: John Linn (DEC)
  1478.  
  1479.  
  1480.           o  GSS_CREDENTIALS_EXPIRED indicates that the credentials pro-
  1481.              vided through the input claimant_cred_handle argument are no
  1482.              longer valid, so context establishment cannot be completed.
  1483.  
  1484.           o  GSS_BAD_BINDINGS indicates that a mismatch between the
  1485.              caller-provided chan_bindings and those extracted from the
  1486.              input_token was detected, signifying a security-relevant
  1487.              event and preventing context establishment. (This result will
  1488.              be returned by GSS_Init_sec_context only for contexts where
  1489.              mutual_state is TRUE.)
  1490.  
  1491.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  1492.              for the input context_handle provided; this major status will
  1493.              be returned only for successor calls following GSS_CONTINUE_
  1494.              NEEDED status returns.
  1495.  
  1496.           o  GSS_BAD_NAMETYPE indicates that the provided targ_name is
  1497.              of a type uninterpretable or unsupported by the supporting
  1498.              GSS-API implementation, so context establishment cannot be
  1499.              completed.
  1500.  
  1501.           o  GSS_BAD_NAME indicates that the provided targ_name is incon-
  1502.              sistent in terms of internally-incorporated type specifier
  1503.              information, so context establishment cannot be accomplished.
  1504.  
  1505.           o  GSS_FAILURE indicates that context setup could not be ac-
  1506.              complished for reasons unspecified at the GSS-API level, and
  1507.              that no interface-defined recovery action is available.
  1508.  
  1509.           This routine is used by a context initiator, and ordinarily
  1510.           emits one (or, for the case of a multi-step exchange, more than
  1511.           one) output_token suitable for use by the target within the
  1512.           selected mech_type's protocol. Using information in the creden-
  1513.           tials structure referenced by claimant_cred_handle, GSS_Init_
  1514.           sec_context()  initializes the data structures required to es-
  1515.           tablish a security context with target targ_name. The claimant_
  1516.           cred_handle must correspond to the same valid credentials struc-
  1517.           ture on the initial call to GSS_Init_sec_context()  and on any
  1518.           successor calls resulting from GSS_CONTINUE_NEEDED status re-
  1519.           turns; different protocol sequences modeled by the GSS_CONTINUE_
  1520.  
  1521.                                       Document Expiration: 31 May 1993  31
  1522.  
  1523.  
  1524.  
  1525.  
  1526.           Generic Security Service API: Internet-Draft: November 1992
  1527.           Common Authentication Technology WG: John Linn (DEC)
  1528.  
  1529.  
  1530.           NEEDED mechanism will require access to credentials at different
  1531.           points in the context establishment sequence.
  1532.  
  1533.           The input_context_handle argument is 0, specifying "not yet as-
  1534.           signed", on the first GSS_Init_sec_context()  call relating to
  1535.           a given context. That call returns an output_context_handle for
  1536.           future references to this context. When continuation attempts to
  1537.           GSS_Init_sec_context()  are needed to perform context establish-
  1538.           ment, the previously-returned non-zero handle value is entered
  1539.           into the input_context_handle argument and will be echoed in the
  1540.           returned output_context_handle argument. On such continuation
  1541.           attempts (and only on continuation attempts) the input_token
  1542.           value is used, to provide the token returned from the context's
  1543.           target.
  1544.  
  1545.           The chan_bindings argument is used by the caller to provide
  1546.           information binding the security context to security-related
  1547.           characteristics (e.g., addresses, cryptographic keys) of the
  1548.           underlying communications channel. See Section 1.1.6 of this
  1549.           document for more discussion of this argument's usage.
  1550.  
  1551.           The input_token argument contains a message received from the
  1552.           target, and is significant only on a call to GSS_Init_sec_
  1553.           context()  which follows a previous return indicating GSS_
  1554.           CONTINUE_NEEDED major_status.
  1555.  
  1556.           It is the caller's responsibility to establish a communications
  1557.           path to the target, and to transmit any returned output_token
  1558.           (independent of the accompanying returned major_status value)
  1559.           to the target over that path. The output_token can, however, be
  1560.           transmitted along with the first application-provided input mes-
  1561.           sage to be processed by GSS_Sign()  or GSS_Seal() in conjunction
  1562.           with a successfully-established context.
  1563.  
  1564.           The initiator may request various context-level functions
  1565.           through input flags: the deleg_req_flag requests delegation
  1566.           of access rights, the mutual_req_flag requests mutual authenti-
  1567.           cation, the replay_det_req_flag requests that replay detection
  1568.           features be applied to messages transferred on the established
  1569.  
  1570.           32  Document Expiration: 31 May 1993
  1571.  
  1572.  
  1573.  
  1574.  
  1575.                Generic Security Service API: Internet-Draft: November 1992
  1576.                       Common Authentication Technology WG: John Linn (DEC)
  1577.  
  1578.  
  1579.           context, and the sequence_req_flag requests that sequencing
  1580.           be enforced. (See Section 1.2.3 for more information on replay
  1581.           detection and sequencing features.)
  1582.  
  1583.           Not all of the optionally-requestable features will be available
  1584.           in all underlying mech_types; the corresponding return state
  1585.           values (deleg_state, mutual_state, replay_det_state, sequence_
  1586.           state) indicate, as a function of mech_type processing capabil-
  1587.           ities and initiator-provided input flags, the set of features
  1588.           which will be active on the context. These state indicators'
  1589.           values are undefined unless the routine's major_status indi-
  1590.           cates COMPLETE. Failure to provide the precise set of features
  1591.           requested by the caller does not cause context establishment
  1592.           to fail; it is the caller's prerogative to delete the context
  1593.           if the feature set provided is unsuitable for the caller's use.
  1594.           The returned mech_type value indicates the specific mechanism
  1595.           employed on the context, and will never indicate the value for
  1596.           "default".
  1597.  
  1598.           The conf_avail return value indicates whether the context sup-
  1599.           ports per-message confidentiality services, and so informs the
  1600.           caller whether or not a request for encryption through the conf_
  1601.           req_flag input to GSS_Seal()  can be honored. In similar fash-
  1602.           ion, the integ_avail return value indicates whether per-message
  1603.           integrity services are available (through either GSS_Sign()  or
  1604.           GSS_Seal())  on the established context.
  1605.  
  1606.           The lifetime_req input specifies a desired upper bound for the
  1607.           lifetime of the context to be established, with a value of 0
  1608.           used to request a default lifetime. The lifetime_rec return
  1609.           value indicates the length of time for which the context will
  1610.           be valid, expressed as an offset from the present; depending on
  1611.           mechanism capabilities, credential lifetimes, and local policy,
  1612.           it may not correspond to the value requested in lifetime_req.
  1613.           If no constraints on context lifetime are imposed, this may be
  1614.           indicated by returning a reserved value representing INDEFI-
  1615.           NITE lifetime_req. The values of conf_avail, integ_avail, and
  1616.           lifetime_rec are undefined unless the routine's major_status
  1617.           indicates COMPLETE.
  1618.  
  1619.                                       Document Expiration: 31 May 1993  33
  1620.  
  1621.  
  1622.  
  1623.  
  1624.           Generic Security Service API: Internet-Draft: November 1992
  1625.           Common Authentication Technology WG: John Linn (DEC)
  1626.  
  1627.  
  1628.           If the mutual_state is TRUE, this fact will be reflected within
  1629.           the output_token. A call to GSS_Accept_sec_context()  at the
  1630.           target in conjunction with such a context will return a to-
  1631.           ken, to be processed by a continuation call to GSS_Init_sec_
  1632.           context(),  in order to achieve mutual authentication.
  1633.  
  1634.           2.2.2  GSS_Accept_sec_context call
  1635.  
  1636.           Inputs:
  1637.  
  1638.           o  acceptor_cred_handle OCTET STRING,-NULL specifies "use de-
  1639.              fault"
  1640.  
  1641.           o  input_context_handle INTEGER, -0 specifies "not yet assigned"
  1642.  
  1643.           o  chan_bindings OCTET STRING,
  1644.  
  1645.           o  input_token OCTET STRING
  1646.  
  1647.           Outputs:
  1648.  
  1649.           o  major_status INTEGER,
  1650.  
  1651.           o  minor_status INTEGER,
  1652.  
  1653.           o  src_name INTERNAL NAME,
  1654.  
  1655.           o  mech_type OBJECT IDENTIFIER,
  1656.  
  1657.           o  output_context_handle INTEGER,
  1658.  
  1659.           o  deleg_state BOOLEAN,
  1660.  
  1661.           o  mutual_state BOOLEAN,
  1662.  
  1663.           o  replay_det_state BOOLEAN,
  1664.  
  1665.           o  sequence_state BOOLEAN,
  1666.  
  1667.           o  conf_avail BOOLEAN,
  1668.  
  1669.           o  integ_avail BOOLEAN,
  1670.  
  1671.           o  lifetime_rec INTEGER, - in seconds, or reserved value for
  1672.              INDEFINITE
  1673.  
  1674.           34  Document Expiration: 31 May 1993
  1675.  
  1676.  
  1677.  
  1678.  
  1679.                Generic Security Service API: Internet-Draft: November 1992
  1680.                       Common Authentication Technology WG: John Linn (DEC)
  1681.  
  1682.  
  1683.           o  delegated_cred_handle OCTET STRING,
  1684.  
  1685.           o  output_token OCTET STRING -NULL or token to pass to context
  1686.              initiator
  1687.  
  1688.           This call may block pending network interactions for those
  1689.           mech_types in which a directory service or other network entity
  1690.           must be consulted on behalf of a context acceptor in order to
  1691.           validate a received input_token.
  1692.  
  1693.           Return major_status codes:
  1694.  
  1695.           o  GSS_COMPLETE indicates that context-level data structures
  1696.              were successfully initialized, and that per-message process-
  1697.              ing can now be performed in conjunction with this context.
  1698.  
  1699.           o  GSS_CONTINUE_NEEDED indicates that control information in the
  1700.              returned output_token must be sent to the initiator, and that
  1701.              a response must be received and passed as the input_token
  1702.              argument to a continuation call to GSS_Accept_sec_context(),
  1703.              before per-message processing can be performed in conjunction
  1704.              with this context.
  1705.  
  1706.           o  GSS_DEFECTIVE_TOKEN indicates that consistency checks per-
  1707.              formed on the input_token failed, preventing further process-
  1708.              ing from being performed based on that token.
  1709.  
  1710.           o  GSS_DEFECTIVE_CREDENTIAL indicates that consistency checks
  1711.              performed on the credential structure referenced by acceptor_
  1712.              cred_handle failed, preventing further processing from being
  1713.              performed using that credential structure.
  1714.  
  1715.           o  GSS_BAD_SIG indicates that the received input_token con-
  1716.              tains an incorrect signature, so context setup cannot be
  1717.              accomplished.
  1718.  
  1719.           o  GSS_DUPLICATE_TOKEN indicates that the signature on the
  1720.              received input_token was correct, but that the input_token
  1721.              was recognized as a duplicate of an input_token already
  1722.              processed. No new context is established.
  1723.  
  1724.                                       Document Expiration: 31 May 1993  35
  1725.  
  1726.  
  1727.  
  1728.  
  1729.           Generic Security Service API: Internet-Draft: November 1992
  1730.           Common Authentication Technology WG: John Linn (DEC)
  1731.  
  1732.  
  1733.           o  GSS_OLD_TOKEN indicates that the signature on the received
  1734.              input_token was correct, but that the input_token is too old
  1735.              to be checked for duplication against previously-processed
  1736.              input_tokens. No new context is established.
  1737.  
  1738.           o  GSS_NO_CRED indicates that no context was established, ei-
  1739.              ther because the input cred_handle was invalid, because the
  1740.              referenced credentials are valid for context initiator use
  1741.              only, or because the caller lacks authorization to access the
  1742.              referenced credentials.
  1743.  
  1744.           o  GSS_CREDENTIALS_EXPIRED indicates that the credentials pro-
  1745.              vided through the input acceptor_cred_handle argument are no
  1746.              longer valid, so context establishment cannot be completed.
  1747.  
  1748.           o  GSS_BAD_BINDINGS indicates that a mismatch between the
  1749.              caller-provided chan_bindings and those extracted from the
  1750.              input_token was detected, signifying a security-relevant
  1751.              event and preventing context establishment.
  1752.  
  1753.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  1754.              for the input context_handle provided; this major status will
  1755.              be returned only for successor calls following GSS_CONTINUE_
  1756.              NEEDED status returns.
  1757.  
  1758.           o  GSS_FAILURE indicates that context setup could not be ac-
  1759.              complished for reasons unspecified at the GSS-API level, and
  1760.              that no interface-defined recovery action is available.
  1761.  
  1762.           The GSS_Accept_sec_context()  routine is used by a context tar-
  1763.           get. Using information in the credentials structure referenced
  1764.           by the input acceptor_cred_handle, it verifies the incoming in-
  1765.           put_token and (following the successful completion of a context
  1766.           establishment sequence) returns the authenticated src_name and
  1767.           the mech_type used. The acceptor_cred_handle must correspond to
  1768.           the same valid credentials structure on the initial call to GSS_
  1769.           Accept_sec_context()  and on any successor calls resulting from
  1770.           GSS_CONTINUE_NEEDED status returns; different protocol sequences
  1771.           modeled by the GSS_CONTINUE_NEEDED mechanism will require access
  1772.  
  1773.           36  Document Expiration: 31 May 1993
  1774.  
  1775.  
  1776.  
  1777.  
  1778.                Generic Security Service API: Internet-Draft: November 1992
  1779.                       Common Authentication Technology WG: John Linn (DEC)
  1780.  
  1781.  
  1782.           to credentials at different points in the context establishment
  1783.           sequence.
  1784.  
  1785.           The input_context_handle argument is 0, specifying "not yet as-
  1786.           signed", on the first GSS_Accept_sec_context()  call relating to
  1787.           a given context. That call returns an output_context_handle for
  1788.           future references to this context; when continuation attempts
  1789.           to GSS_Accept_sec_context()  are needed to perform context es-
  1790.           tablishment, that handle value will be entered into the input_
  1791.           context_handle argument.
  1792.  
  1793.           The chan_bindings argument is used by the caller to provide
  1794.           information binding the security context to security-related
  1795.           characteristics (e.g., addresses, cryptographic keys) of the
  1796.           underlying communications channel. See Section 1.1.6 of this
  1797.           document for more discussion of this argument's usage.
  1798.  
  1799.           The returned state results (deleg_state, mutual_state, replay_
  1800.           det_state, and sequence_state) reflect the same context state
  1801.           values as returned to GSS_Init_sec_context()'s  caller at the
  1802.           initiator system.
  1803.  
  1804.           The conf_avail return value indicates whether the context sup-
  1805.           ports per-message confidentiality services, and so informs the
  1806.           caller whether or not a request for encryption through the conf_
  1807.           req_flag input to GSS_Seal()  can be honored. In similar fash-
  1808.           ion, the integ_avail return value indicates whether per-message
  1809.           integrity services are available (through either GSS_Sign()  or
  1810.           GSS_Seal())  on the established context.
  1811.  
  1812.           The lifetime_rec return value indicates the length of time for
  1813.           which the context will be valid, expressed as an offset from the
  1814.           present. The values of deleg_state, mutual_state, replay_det_
  1815.           state, sequence_state, conf_avail, integ_avail, and lifetime_rec
  1816.           are undefined unless the accompanying major_status indicates
  1817.           COMPLETE.
  1818.  
  1819.  
  1820.  
  1821.                                       Document Expiration: 31 May 1993  37
  1822.  
  1823.  
  1824.  
  1825.  
  1826.           Generic Security Service API: Internet-Draft: November 1992
  1827.           Common Authentication Technology WG: John Linn (DEC)
  1828.  
  1829.  
  1830.           The delegated_cred_handle result is significant only when deleg_
  1831.           state is TRUE, and provides a means for the target to reference
  1832.           the delegated credentials. The output_token result, when non-
  1833.           NULL, provides a context-level token to be returned to the
  1834.           context initiator to continue a multi-step context establishment
  1835.           sequence. As noted with GSS_Init_sec_context(),  any returned
  1836.           token should be transferred to the context's peer (in this
  1837.           case, the context initiator), independent of the value of the
  1838.           accompanying returned major_status.
  1839.  
  1840.           Note: A target must be able to distinguish a context-level in-
  1841.           put_token, which is passed to GSS_Accept_sec_context(),  from
  1842.           the per-message data elements passed to GSS_Verify()  or GSS_
  1843.           Unseal().  These data elements may arrive in a single applica-
  1844.           tion message, and GSS_Accept_sec_context()  must be performed
  1845.           before per-message processing can be performed successfully.
  1846.  
  1847.           2.2.3  GSS_Delete_sec_context call
  1848.  
  1849.           Input:
  1850.  
  1851.           o  context_handle INTEGER
  1852.  
  1853.           Outputs:
  1854.  
  1855.           o  major_status INTEGER,
  1856.  
  1857.           o  minor_status INTEGER,
  1858.  
  1859.           o  output_context_token OCTET STRING
  1860.  
  1861.           Return major_status codes:
  1862.  
  1863.           o  GSS_COMPLETE indicates that the context was recognized, that
  1864.              relevant context-specific information was flushed, and that
  1865.              the returned output_context_token is ready for transfer to
  1866.              the context's peer.
  1867.  
  1868.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  1869.              for the input context_handle provide, so no deletion was
  1870.              performed.
  1871.  
  1872.           38  Document Expiration: 31 May 1993
  1873.  
  1874.  
  1875.  
  1876.  
  1877.                Generic Security Service API: Internet-Draft: November 1992
  1878.                       Common Authentication Technology WG: John Linn (DEC)
  1879.  
  1880.  
  1881.           o  GSS_FAILURE indicates that the context is recognized, but
  1882.              that the GSS_Delete_sec_context()  operation could not be
  1883.              performed for reasons unspecified at the GSS-API level.
  1884.  
  1885.           This call may block pending network interactions for mech_types
  1886.           in which active notification must be made to a central server
  1887.           when a security context is to be deleted.
  1888.  
  1889.           This call can be made by either peer in a security context,
  1890.           to flush context-specific information and to return an output_
  1891.           context_token which can be passed to the context's peer in-
  1892.           forming it that the peer's corresponding context information
  1893.           can also be flushed. (Once a context is established, the peers
  1894.           involved are expected to retain cached credential and context-
  1895.           related information until the information's expiration time is
  1896.           reached or until a GSS_Delete_sec_context()  call is made.) At-
  1897.           tempts to perform per-message processing on a deleted context
  1898.           will result in error returns.
  1899.  
  1900.           2.2.4  GSS_Process_context_token call
  1901.  
  1902.           Inputs:
  1903.  
  1904.           o  context_handle INTEGER,
  1905.  
  1906.           o  input_context_token OCTET STRING
  1907.  
  1908.           Outputs:
  1909.  
  1910.           o  major_status INTEGER,
  1911.  
  1912.           o  minor_status INTEGER,
  1913.  
  1914.           Return major_status codes:
  1915.  
  1916.           o  GSS_COMPLETE indicates that the input_context_token was suc-
  1917.              cessfully processed in conjunction with the context refer-
  1918.              enced by context_handle.
  1919.  
  1920.           o  GSS_DEFECTIVE_TOKEN indicates that consistency checks per-
  1921.              formed on the received context_token failed, preventing
  1922.              further processing from being performed with that token.
  1923.  
  1924.                                       Document Expiration: 31 May 1993  39
  1925.  
  1926.  
  1927.  
  1928.  
  1929.           Generic Security Service API: Internet-Draft: November 1992
  1930.           Common Authentication Technology WG: John Linn (DEC)
  1931.  
  1932.  
  1933.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  1934.              for the input context_handle provided.
  1935.  
  1936.           o  GSS_FAILURE indicates that the context is recognized, but
  1937.              that the GSS_Process_context_token()  operation could not be
  1938.              performed for reasons unspecified at the GSS-API level.
  1939.  
  1940.           This call is used to process context_tokens received from a peer
  1941.           once a context has been established, with corresponding impact
  1942.           on context-level state information. One use for this facility is
  1943.           processing of the context_tokens generated by GSS_Delete_sec_
  1944.           context();  GSS_Process_context_token() will not block pending
  1945.           network interactions for that purpose. Another use is to process
  1946.           tokens indicating remote-peer context establishment failures
  1947.           after the point where the local GSS-API implementation has
  1948.           already indicated GSS_COMPLETE status.
  1949.  
  1950.           2.2.5  GSS_Context_time call
  1951.  
  1952.           Input:
  1953.  
  1954.           o  context_handle INTEGER,
  1955.  
  1956.           Outputs:
  1957.  
  1958.           o  major_status INTEGER,
  1959.  
  1960.           o  minor_status INTEGER,
  1961.  
  1962.           o  lifetime_rec INTEGER - in seconds, or reserved value for
  1963.              INDEFINITE
  1964.  
  1965.           Return major_status codes:
  1966.  
  1967.           o  GSS_COMPLETE indicates that the referenced context is valid,
  1968.              and will remain valid for the amount of time indicated in
  1969.              lifetime_rec.
  1970.  
  1971.           o  GSS_CONTEXT_EXPIRED indicates that data items related to the
  1972.              referenced context have expired.
  1973.  
  1974.           40  Document Expiration: 31 May 1993
  1975.  
  1976.  
  1977.  
  1978.  
  1979.                Generic Security Service API: Internet-Draft: November 1992
  1980.                       Common Authentication Technology WG: John Linn (DEC)
  1981.  
  1982.  
  1983.           o  GSS_CREDENTIALS_EXPIRED indicates that the context is recog-
  1984.              nized, but that its associated credentials have expired.
  1985.  
  1986.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  1987.              for the input context_handle provided.
  1988.  
  1989.           o  GSS_FAILURE indicates that the requested operation failed for
  1990.              reasons unspecified at the GSS-API level.
  1991.  
  1992.           This call is used to determine the amount of time for which a
  1993.           currently established context will remain valid.
  1994.  
  1995.           2.3  Per-message calls
  1996.  
  1997.           This group of calls is used to perform per-message protection
  1998.           processing on an established security context. None of these
  1999.           calls block pending network interactions. These calls may be
  2000.           invoked by a context's initiator or by the context's target.
  2001.           The four members of this group should be considered as two
  2002.           pairs; the output from GSS_Sign()  is properly input to GSS_
  2003.           Verify(),  and the output from GSS_Seal() is properly input to
  2004.           GSS_Unseal().
  2005.  
  2006.           GSS_Sign()  and GSS_Verify() support data origin authentication
  2007.           and data integrity services. When GSS_Sign()  is invoked on
  2008.           an input message, it yields a per-message token containing
  2009.           data items which allow underlying mechanisms to provide the
  2010.           specified security services. The original message, along with
  2011.           the generated per-message token, is passed to the remote peer;
  2012.           these two data elements are processed by GSS_Verify(),  which
  2013.           validates the message in conjunction with the separate token.
  2014.  
  2015.           GSS_Seal()  and GSS_Unseal() support caller-requested confiden-
  2016.           tiality in addition to the data origin authentication and data
  2017.           integrity services offered by GSS_Sign()  and GSS_Verify(). GSS_
  2018.           Seal()  outputs a single data element, encapsulating optionally-
  2019.           enciphered user data as well as associated token data items.
  2020.           The data element output from GSS_Seal()  is passed to the remote
  2021.           peer and processed by GSS_Unseal()  at that system. GSS_Unseal()
  2022.  
  2023.                                       Document Expiration: 31 May 1993  41
  2024.  
  2025.  
  2026.  
  2027.  
  2028.           Generic Security Service API: Internet-Draft: November 1992
  2029.           Common Authentication Technology WG: John Linn (DEC)
  2030.  
  2031.  
  2032.           combines decipherment (as required) with validation of data
  2033.           items related to authentication and integrity.
  2034.  
  2035.           2.3.1  GSS_Sign call
  2036.  
  2037.           Inputs:
  2038.  
  2039.           o  context_handle INTEGER,
  2040.  
  2041.           o  qop_req INTEGER,-0 specifies default QOP
  2042.  
  2043.           o  message OCTET STRING
  2044.  
  2045.           Outputs:
  2046.  
  2047.           o  major_status INTEGER,
  2048.  
  2049.           o  minor_status INTEGER,
  2050.  
  2051.           o  per_msg_token OCTET STRING
  2052.  
  2053.           Return major_status codes:
  2054.  
  2055.           o  GSS_COMPLETE indicates that a signature, suitable for an
  2056.              established security context, was successfully applied and
  2057.              that the message and corresponding per_msg_token are ready
  2058.              for transmission.
  2059.  
  2060.           o  GSS_CONTEXT_EXPIRED indicates that context-related data
  2061.              items have expired, so that the requested operation cannot be
  2062.              performed.
  2063.  
  2064.           o  GSS_CREDENTIALS_EXPIRED indicates that the context is recog-
  2065.              nized, but that its associated credentials have expired, so
  2066.              that the requested operation cannot be performed.
  2067.  
  2068.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  2069.              for the input context_handle provided.
  2070.  
  2071.           o  GSS_FAILURE indicates that the context is recognized, but
  2072.              that the requested operation could not be performed for
  2073.              reasons unspecified at the GSS-API level.
  2074.  
  2075.           42  Document Expiration: 31 May 1993
  2076.  
  2077.  
  2078.  
  2079.  
  2080.                Generic Security Service API: Internet-Draft: November 1992
  2081.                       Common Authentication Technology WG: John Linn (DEC)
  2082.  
  2083.  
  2084.           Using the security context referenced by context_handle, apply
  2085.           a signature to the input message (along with timestamps and/or
  2086.           other data included in support of mech_type-specific mechanisms)
  2087.           and return the result in per_msg_token. The qop_req parameter
  2088.           allows quality-of-protection control. The caller passes the
  2089.           message and the per_msg_token to the target.
  2090.  
  2091.           The GSS_Sign()  function completes before the message and per_
  2092.           msg_token is sent to the peer; successful application of GSS_
  2093.           Sign()  does not guarantee that a corresponding GSS_Verify() has
  2094.           been (or can necessarily be) performed successfully when the
  2095.           message arrives at the destination.
  2096.  
  2097.           2.3.2  GSS_Verify call
  2098.  
  2099.           Inputs:
  2100.  
  2101.           o  context_handle INTEGER,
  2102.  
  2103.           o  message OCTET STRING,
  2104.  
  2105.           o  per_msg_token OCTET STRING
  2106.  
  2107.           Outputs:
  2108.  
  2109.           o  qop_state INTEGER,
  2110.  
  2111.           o  major_status INTEGER,
  2112.  
  2113.           o  minor_status INTEGER,
  2114.  
  2115.           Return major_status codes:
  2116.  
  2117.           o  GSS_COMPLETE indicates that the message was successfully
  2118.              verified.
  2119.  
  2120.           o  GSS_DEFECTIVE_TOKEN indicates that consistency checks per-
  2121.              formed on the received per_msg_token failed, preventing
  2122.              further processing from being performed with that token.
  2123.  
  2124.           o  GSS_BAD_SIG indicates that the received per_msg_token con-
  2125.              tains an incorrect signature for the message.
  2126.  
  2127.                                       Document Expiration: 31 May 1993  43
  2128.  
  2129.  
  2130.  
  2131.  
  2132.           Generic Security Service API: Internet-Draft: November 1992
  2133.           Common Authentication Technology WG: John Linn (DEC)
  2134.  
  2135.  
  2136.           o  GSS_DUPLICATE_TOKEN, GSS_OLD_TOKEN, and GSS_UNSEQ_TOKEN
  2137.              values appear in conjunction with the optional per-message
  2138.              replay detection features described in Section 1.2.3; their
  2139.              semantics are described in that section.
  2140.  
  2141.           o  GSS_CONTEXT_EXPIRED indicates that context-related data
  2142.              items have expired, so that the requested operation cannot be
  2143.              performed.
  2144.  
  2145.           o  GSS_CREDENTIALS_EXPIRED indicates that the context is recog-
  2146.              nized, but that its associated credentials have expired, so
  2147.              that the requested operation cannot be performed.
  2148.  
  2149.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  2150.              for the input context_handle provided.
  2151.  
  2152.           o  GSS_FAILURE indicates that the context is recognized, but
  2153.              that the GSS_Verify()  operation could not be performed for
  2154.              reasons unspecified at the GSS-API level.
  2155.  
  2156.           Using the security context referenced by context_handle, verify
  2157.           that the input per_msg_token contains an appropriate signature
  2158.           for the input message, and apply any active replay detection
  2159.           or sequencing features. Return an indication of the quality-
  2160.           of-protection applied to the processed message in the qop_state
  2161.           result.
  2162.  
  2163.           2.3.3  GSS_Seal call
  2164.  
  2165.           Inputs:
  2166.  
  2167.           o  context_handle INTEGER,
  2168.  
  2169.           o  conf_req_flag BOOLEAN,
  2170.  
  2171.           o  qop_req INTEGER,-0 specifies default QOP
  2172.  
  2173.           o  input_message OCTET STRING
  2174.  
  2175.           Outputs:
  2176.  
  2177.           o  major_status INTEGER,
  2178.  
  2179.           44  Document Expiration: 31 May 1993
  2180.  
  2181.  
  2182.  
  2183.  
  2184.                Generic Security Service API: Internet-Draft: November 1992
  2185.                       Common Authentication Technology WG: John Linn (DEC)
  2186.  
  2187.  
  2188.           o  minor_status INTEGER,
  2189.  
  2190.           o  conf_state BOOLEAN,
  2191.  
  2192.           o  output_message OCTET STRING
  2193.  
  2194.           Return major_status codes:
  2195.  
  2196.           o  GSS_COMPLETE indicates that the input_message was success-
  2197.              fully processed and that the output_message is ready for
  2198.              transmission.
  2199.  
  2200.           o  GSS_CONTEXT_EXPIRED indicates that context-related data
  2201.              items have expired, so that the requested operation cannot be
  2202.              performed.
  2203.  
  2204.           o  GSS_CREDENTIALS_EXPIRED indicates that the context is recog-
  2205.              nized, but that its associated credentials have expired, so
  2206.              that the requested operation cannot be performed.
  2207.  
  2208.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  2209.              for the input context_handle provided.
  2210.  
  2211.           o  GSS_FAILURE indicates that the context is recognized, but
  2212.              that the GSS_Seal()  operation could not be performed for
  2213.              reasons unspecified at the GSS-API level.
  2214.  
  2215.           Performs the data origin authentication and data integrity
  2216.           functions of GSS_Sign().  If the input conf_req_flag is TRUE,
  2217.           requests that confidentiality be applied to the input_message.
  2218.           Confidentiality may not be supported in all mech_types or by all
  2219.           implementations; the returned conf_state flag indicates whether
  2220.           confidentiality was provided for the input_message. The qop_req
  2221.           parameter allows quality-of-protection control.
  2222.  
  2223.           In all cases, the GSS_Seal()  call yields a single output_
  2224.           message data element containing (optionally enciphered) user
  2225.           data as well as control information.
  2226.  
  2227.                                       Document Expiration: 31 May 1993  45
  2228.  
  2229.  
  2230.  
  2231.  
  2232.           Generic Security Service API: Internet-Draft: November 1992
  2233.           Common Authentication Technology WG: John Linn (DEC)
  2234.  
  2235.  
  2236.           2.3.4  GSS_Unseal call
  2237.  
  2238.           Inputs:
  2239.  
  2240.           o  context_handle INTEGER,
  2241.  
  2242.           o  input_message OCTET STRING
  2243.  
  2244.           Outputs:
  2245.  
  2246.           o  conf_state BOOLEAN,
  2247.  
  2248.           o  qop_state INTEGER,
  2249.  
  2250.           o  major_status INTEGER,
  2251.  
  2252.           o  minor_status INTEGER,
  2253.  
  2254.           o  output_message OCTET STRING
  2255.  
  2256.           Return major_status codes:
  2257.  
  2258.           o  GSS_COMPLETE indicates that the input_message was success-
  2259.              fully processed and that the resulting output_message is
  2260.              available.
  2261.  
  2262.           o  GSS_DEFECTIVE_TOKEN indicates that consistency checks per-
  2263.              formed on the per_msg_token extracted from the input_message
  2264.              failed, preventing further processing from being performed.
  2265.  
  2266.           o  GSS_BAD_SIG indicates that an incorrect signature was de-
  2267.              tected for the message.
  2268.  
  2269.           o  GSS_DUPLICATE_TOKEN, GSS_OLD_TOKEN, and GSS_UNSEQ_TOKEN
  2270.              values appear in conjunction with the optional per-message
  2271.              replay detection features described in Section 1.2.3; their
  2272.              semantics are described in that section.
  2273.  
  2274.           o  GSS_CONTEXT_EXPIRED indicates that context-related data
  2275.              items have expired, so that the requested operation cannot be
  2276.              performed.
  2277.  
  2278.           o  GSS_CREDENTIALS_EXPIRED indicates that the context is recog-
  2279.              nized, but that its associated credentials have expired, so
  2280.              that the requested operation cannot be performed.
  2281.  
  2282.           46  Document Expiration: 31 May 1993
  2283.  
  2284.  
  2285.  
  2286.  
  2287.                Generic Security Service API: Internet-Draft: November 1992
  2288.                       Common Authentication Technology WG: John Linn (DEC)
  2289.  
  2290.  
  2291.           o  GSS_NO_CONTEXT indicates that no valid context was recognized
  2292.              for the input context_handle provided.
  2293.  
  2294.           o  GSS_FAILURE indicates that the context is recognized, but
  2295.              that the GSS_Unseal()  operation could not be performed for
  2296.              reasons unspecified at the GSS-API level.
  2297.  
  2298.           Processes a data element generated (and optionally enciphered)
  2299.           by GSS_Seal(),  provided as input_message. The returned conf_
  2300.           state value indicates whether confidentiality was applied to the
  2301.           input_message. If conf_state is TRUE, GSS_Unseal()  deciphers
  2302.           the input_message. Returns an indication of the quality-of-
  2303.           protection applied to the processed message in the qop_state
  2304.           result. GSS_Seal()  performs the data integrity and data ori-
  2305.           gin authentication checking functions of GSS_Verify()  on the
  2306.           plaintext data. Plaintext data is returned in output_message.
  2307.  
  2308.           2.4  Support calls
  2309.  
  2310.           This group of calls provides support functions useful to GSS-API
  2311.           callers, independent of the state of established contexts. Their
  2312.           characterization with regard to blocking or non-blocking status
  2313.           in terms of network interactions is unspecified.
  2314.  
  2315.           2.4.1  GSS_Display_status call
  2316.  
  2317.           Inputs:
  2318.  
  2319.           o  status_value INTEGER,-GSS-API major_status or minor_status
  2320.              return value
  2321.  
  2322.           o  status_type INTEGER,-1 if major_status, 2 if minor_status
  2323.  
  2324.           o  mech_type OBJECT IDENTIFIER-mech_type to be used for minor_
  2325.              status translation
  2326.  
  2327.           Outputs:
  2328.  
  2329.           o  major_status INTEGER,
  2330.  
  2331.           o  minor_status INTEGER,
  2332.  
  2333.                                       Document Expiration: 31 May 1993  47
  2334.  
  2335.  
  2336.  
  2337.  
  2338.           Generic Security Service API: Internet-Draft: November 1992
  2339.           Common Authentication Technology WG: John Linn (DEC)
  2340.  
  2341.  
  2342.           o  status_string_set SET OF OCTET STRING
  2343.  
  2344.           Return major_status codes:
  2345.  
  2346.           o  GSS_COMPLETE indicates that a valid printable status repre-
  2347.              sentation (possibly representing more than one status event
  2348.              encoded within the status_value) is available in the returned
  2349.              status_string_set.
  2350.  
  2351.           o  GSS_BAD_MECH indicates that translation in accordance with an
  2352.              unsupported mech_type was requested, so translation could not
  2353.              be performed.
  2354.  
  2355.           o  GSS_BAD_STATUS indicates that the input status_value was
  2356.              invalid, or that the input status_type carried a value other
  2357.              than 1 or 2, so translation could not be performed.
  2358.  
  2359.           o  GSS_FAILURE indicates that the requested operation could not
  2360.              be performed for reasons unspecified at the GSS-API level.
  2361.  
  2362.           Provides a means for callers to translate GSS-API-returned major
  2363.           and minor status codes into printable string representations.
  2364.  
  2365.           2.4.2  GSS_Indicate_mechs call
  2366.  
  2367.           Input:
  2368.  
  2369.           o  (none)
  2370.  
  2371.           Outputs:
  2372.  
  2373.           o  major_status INTEGER,
  2374.  
  2375.           o  minor_status INTEGER,
  2376.  
  2377.           o  mech_set SET OF OBJECT IDENTIFIER
  2378.  
  2379.           Return major_status codes:
  2380.  
  2381.           o  GSS_COMPLETE indicates that a set of available mechanisms has
  2382.              been returned in mech_set.
  2383.  
  2384.           48  Document Expiration: 31 May 1993
  2385.  
  2386.  
  2387.  
  2388.  
  2389.                Generic Security Service API: Internet-Draft: November 1992
  2390.                       Common Authentication Technology WG: John Linn (DEC)
  2391.  
  2392.  
  2393.           o  GSS_FAILURE indicates that the requested operation could not
  2394.              be performed for reasons unspecified at the GSS-API level.
  2395.  
  2396.           Allows callers to determine the set of mechanism types avail-
  2397.           able on the local system. This call is intended for support of
  2398.           specialized callers who need to request non-default mech_type
  2399.           sets from GSS_Acquire_cred(),  and should not be needed by other
  2400.           callers.
  2401.  
  2402.           2.4.3  GSS_Compare_name call
  2403.  
  2404.           Inputs:
  2405.  
  2406.           o  name1 INTERNAL NAME,
  2407.  
  2408.           o  name2 INTERNAL NAME
  2409.  
  2410.           Outputs:
  2411.  
  2412.           o  major_status INTEGER,
  2413.  
  2414.           o  minor_status INTEGER,
  2415.  
  2416.           o  name_equal BOOLEAN
  2417.  
  2418.           Return major_status codes:
  2419.  
  2420.           o  GSS_COMPLETE indicates that name1 and name2 were comparable,
  2421.              and that the name_equal result indicates whether name1 and
  2422.              name2 were equal or unequal.
  2423.  
  2424.           o  GSS_BAD_NAMETYPE indicates that one or both of name1 and
  2425.              name2 contained internal type specifiers uninterpretable
  2426.              by the supporting GSS-API implementation, or that the two
  2427.              names' types are different and incomparable, so the equality
  2428.              comparison could not be completed.
  2429.  
  2430.           o  GSS_BAD_NAME indicates that one or both of the input names
  2431.              was ill-formed in terms of its internal type specifier, so
  2432.              the equality comparison could not be completed.
  2433.  
  2434.                                       Document Expiration: 31 May 1993  49
  2435.  
  2436.  
  2437.  
  2438.  
  2439.           Generic Security Service API: Internet-Draft: November 1992
  2440.           Common Authentication Technology WG: John Linn (DEC)
  2441.  
  2442.  
  2443.           o  GSS_FAILURE indicates that the requested operation could not
  2444.              be performed for reasons unspecified at the GSS-API level.
  2445.  
  2446.           Allows callers to compare two internal name representations for
  2447.           equality.
  2448.  
  2449.           2.4.4  GSS_Display_name call
  2450.  
  2451.           Inputs:
  2452.  
  2453.           o  name INTERNAL NAME
  2454.  
  2455.           Outputs:
  2456.  
  2457.           o  major_status INTEGER,
  2458.  
  2459.           o  minor_status INTEGER,
  2460.  
  2461.           o  name_string OCTET STRING,
  2462.  
  2463.           o  name_type OBJECT IDENTIFIER
  2464.  
  2465.           Return major_status codes:
  2466.  
  2467.           o  GSS_COMPLETE indicates that a valid printable name represen-
  2468.              tation is available in the returned name_string.
  2469.  
  2470.           o  GSS_BAD_NAMETYPE indicates that the provided name was of a
  2471.              type uninterpretable by the supporting GSS-API implementa-
  2472.              tion, so no printable representation could be generated.
  2473.  
  2474.           o  GSS_BAD_NAME indicates that the contents of the provided name
  2475.              were inconsistent with the internally-indicated name type, so
  2476.              no printable representation could be generated.
  2477.  
  2478.           o  GSS_FAILURE indicates that the requested operation could not
  2479.              be performed for reasons unspecified at the GSS-API level.
  2480.  
  2481.           Allows callers to translate an internal name representation into
  2482.           a printable form with associated namespace type descriptor. The
  2483.           syntax of the printable form is a local matter.
  2484.  
  2485.           50  Document Expiration: 31 May 1993
  2486.  
  2487.  
  2488.  
  2489.  
  2490.                Generic Security Service API: Internet-Draft: November 1992
  2491.                       Common Authentication Technology WG: John Linn (DEC)
  2492.  
  2493.  
  2494.           2.4.5  GSS_Import_name call
  2495.  
  2496.           Inputs:
  2497.  
  2498.           o  input_name_string OCTET STRING,
  2499.  
  2500.           o  input_name_type OBJECT IDENTIFIER
  2501.  
  2502.           Outputs:
  2503.  
  2504.           o  major_status INTEGER,
  2505.  
  2506.           o  minor_status INTEGER,
  2507.  
  2508.           o  output_name INTERNAL NAME
  2509.  
  2510.           Return major_status codes:
  2511.  
  2512.           o  GSS_COMPLETE indicates that a valid name representation is
  2513.              output in output_name and described by the type value in
  2514.              output_name_type.
  2515.  
  2516.           o  GSS_BAD_NAMETYPE indicates that the input_name_type is unsup-
  2517.              ported by the GSS-API implementation, so the import operation
  2518.              could not be completed.
  2519.  
  2520.           o  GSS_BAD_NAME indicates that the provided input_name_string
  2521.              is ill-formed in terms of the input_name_type, so the import
  2522.              operation could not be completed.
  2523.  
  2524.           o  GSS_FAILURE indicates that the requested operation could not
  2525.              be performed for reasons unspecified at the GSS-API level.
  2526.  
  2527.           Allows callers to provide a printable name representation,
  2528.           designate the type of namespace in conjunction with which it
  2529.           should be parsed, and convert that printable representation to
  2530.           an internal form suitable for input to other GSS-API routines.
  2531.           The syntax of the input_name is a local matter.
  2532.  
  2533.                                       Document Expiration: 31 May 1993  51
  2534.  
  2535.  
  2536.  
  2537.  
  2538.           Generic Security Service API: Internet-Draft: November 1992
  2539.           Common Authentication Technology WG: John Linn (DEC)
  2540.  
  2541.  
  2542.           2.4.6  GSS_Release_name call
  2543.  
  2544.           Inputs:
  2545.  
  2546.           o  name INTERNAL NAME
  2547.  
  2548.           Outputs:
  2549.  
  2550.           o  major_status INTEGER,
  2551.  
  2552.           o  minor_status INTEGER
  2553.  
  2554.           Return major_status codes:
  2555.  
  2556.           o  GSS_COMPLETE indicates that the storage associated with the
  2557.              input name was successfully released.
  2558.  
  2559.           o  GSS_BAD_NAME indicates that the input name argument did not
  2560.              contain a valid name.
  2561.  
  2562.           o  GSS_FAILURE indicates that the requested operation could not
  2563.              be performed for reasons unspecified at the GSS-API level.
  2564.  
  2565.           Allows callers to release the storage associated with an inter-
  2566.           nal name representation.
  2567.  
  2568.           2.4.7  GSS_Release_buffer call
  2569.  
  2570.           Inputs:
  2571.  
  2572.           o  buffer OCTET STRING
  2573.  
  2574.           Outputs:
  2575.  
  2576.           o  major_status INTEGER,
  2577.  
  2578.           o  minor_status INTEGER
  2579.  
  2580.           Return major_status codes:
  2581.  
  2582.           o  GSS_COMPLETE indicates that the storage associated with the
  2583.              input buffer was successfully released.
  2584.  
  2585.           52  Document Expiration: 31 May 1993
  2586.  
  2587.  
  2588.  
  2589.  
  2590.                Generic Security Service API: Internet-Draft: November 1992
  2591.                       Common Authentication Technology WG: John Linn (DEC)
  2592.  
  2593.  
  2594.           o  GSS_FAILURE indicates that the requested operation could not
  2595.              be performed for reasons unspecified at the GSS-API level.
  2596.  
  2597.           Allows callers to release the storage associated with an OCTET
  2598.           STRING buffer allocated by another GSS-API call.
  2599.  
  2600.           2.4.8  GSS_Release_oid_set call
  2601.  
  2602.           Inputs:
  2603.  
  2604.           o  buffer SET OF OBJECT IDENTIFIER
  2605.  
  2606.           Outputs:
  2607.  
  2608.           o  major_status INTEGER,
  2609.  
  2610.           o  minor_status INTEGER
  2611.  
  2612.           Return major_status codes:
  2613.  
  2614.           o  GSS_COMPLETE indicates that the storage associated with the
  2615.              input object identifier set was successfully released.
  2616.  
  2617.           o  GSS_FAILURE indicates that the requested operation could not
  2618.              be performed for reasons unspecified at the GSS-API level.
  2619.  
  2620.           Allows callers to release the storage associated with an object
  2621.           identifier set object allocated by another GSS-API call.
  2622.  
  2623.           3  Mechanism-Specific Example Scenarios
  2624.  
  2625.           This section provides illustrative overviews of the use of var-
  2626.           ious candidate mechanism types to support the GSS-API. These
  2627.           discussions are intended primarily for readers familiar with
  2628.           specific security technologies, demonstrating how GSS-API
  2629.           functions can be used and implemented by candidate underly-
  2630.           ing mechanisms. They should not be regarded as constrictive
  2631.           to implementations or as defining the only means through which
  2632.           GSS-API functions can be realized with a particular underlying
  2633.           technology, and do not demonstrate all GSS-API features with
  2634.           each technology.
  2635.  
  2636.                                       Document Expiration: 31 May 1993  53
  2637.  
  2638.  
  2639.  
  2640.  
  2641.           Generic Security Service API: Internet-Draft: November 1992
  2642.           Common Authentication Technology WG: John Linn (DEC)
  2643.  
  2644.  
  2645.           3.1  Kerberos V5, single-TGT
  2646.  
  2647.           OS-specific login functions yield a TGT to the local realm Ker-
  2648.           beros server; TGT is placed in a credentials structure for the
  2649.           client. Client calls GSS_Acquire_cred()  to acquire a cred_
  2650.           handle in order to reference the credentials for use in estab-
  2651.           lishing security contexts.
  2652.  
  2653.           Client calls GSS_Init_sec_context().  If the requested service
  2654.           is located in a different realm, GSS_Init_sec_context()  gets
  2655.           the necessary TGT/key pairs needed to traverse the path from
  2656.           local to target realm; these data are placed in the owner's TGT
  2657.           cache. After any needed remote realm resolution, GSS_Init_sec_
  2658.           context()  yields a service ticket to the requested service with
  2659.           a corresponding session key; these data are stored in conjunc-
  2660.           tion with the context. GSS-API code sends KRB_TGS_REQ request(s)
  2661.           and receives KRB_TGS_REP response(s) (in the successful case) or
  2662.           KRB_ERROR.
  2663.  
  2664.           Assuming success, GSS_Init_sec_context()  builds a Kerberos-
  2665.           formatted KRB_AP_REQ message, and returns it in output_token.
  2666.           The client sends the output_token to the service.
  2667.  
  2668.           The service passes the received token as the input_token argu-
  2669.           ment to GSS_Accept_sec_context(),  which verifies the authen-
  2670.           ticator, provides the service with the client's authenticated
  2671.           name, and returns an output_context_handle.
  2672.  
  2673.           Both parties now hold the session key associated with the ser-
  2674.           vice ticket, and can use this key in subsequent GSS_Sign(),
  2675.           GSS_Verify(),  GSS_Seal(), and GSS_Unseal() operations.
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.           54  Document Expiration: 31 May 1993
  2685.  
  2686.  
  2687.  
  2688.  
  2689.                Generic Security Service API: Internet-Draft: November 1992
  2690.                       Common Authentication Technology WG: John Linn (DEC)
  2691.  
  2692.  
  2693.           3.2  Kerberos V5, double-TGT
  2694.  
  2695.           TGT acquisition as above.
  2696.  
  2697.           Note: To avoid unnecessary frequent invocations of error paths
  2698.           when implementing the GSS-API atop Kerberos V5, it seems appro-
  2699.           priate to represent "single-TGT K-V5" and "double-TGT K-V5" with
  2700.           separate mech_types, and this discussion makes that assumption.
  2701.  
  2702.           Based on the (specified or defaulted) mech_type, GSS_Init_
  2703.           sec_context()  determines that the double-TGT protocol should
  2704.           be employed for the specified target. GSS_Init_sec_context()
  2705.           returns GSS_CONTINUE_NEEDED major_status[9], and its returned
  2706.           output_token contains a request to the service for the service's
  2707.           TGT. (If a service TGT with suitably long remaining lifetime
  2708.           already exists in a cache, it may be usable, obviating the
  2709.           need for this step.) The client passes the output_token to the
  2710.           service.
  2711.  
  2712.           The service passes the received token as the input_token ar-
  2713.           gument to GSS_Accept_sec_context(),  which recognizes it as
  2714.           a request for TGT. (Note that current Kerberos V5 defines no
  2715.           intra-protocol mechanism to represent such a request.) GSS_
  2716.           Accept_sec_context()  returns GSS_CONTINUE_NEEDED major_status
  2717.           and provides the service's TGT in its output_token. The service
  2718.           sends the output_token to the client.
  2719.  
  2720.           The client passes the received token as the input_token argument
  2721.           to a continuation of GSS_Init_sec_context().  GSS_Init_sec_
  2722.           context()  caches the received service TGT and uses it as part
  2723.           of a service ticket request to the Kerberos authentication
  2724.           server, storing the returned service ticket and session key
  2725.           in conjunction with the context. GSS_Init_sec_context()  builds
  2726.  
  2727.           ___________________
  2728.         [9] This scenario illustrates a different use for the GSS_
  2729.             CONTINUE_NEEDED status return facility than for support of
  2730.             mutual authentication; note that both uses can coexist as
  2731.             successive operations within a single context establishment
  2732.  
  2733.             operation.
  2734.  
  2735.                                       Document Expiration: 31 May 1993  55
  2736.  
  2737.  
  2738.  
  2739.  
  2740.           Generic Security Service API: Internet-Draft: November 1992
  2741.           Common Authentication Technology WG: John Linn (DEC)
  2742.  
  2743.  
  2744.           a Kerberos-formatted authenticator, and returns it in output_
  2745.           token along with GSS_COMPLETE return major_status. The client
  2746.           sends the output_token to the service.
  2747.  
  2748.           Service passes the received token as the input_token argument
  2749.           to a continuation call to GSS_Accept_sec_context().  GSS_Accept_
  2750.           sec_context()  verifies the authenticator, provides the service
  2751.           with the client's authenticated name, and returns major_status
  2752.           GSS_COMPLETE.
  2753.  
  2754.           GSS_Sign(),  GSS_Verify(), GSS_Seal(), and GSS_Unseal()  as
  2755.           above.
  2756.  
  2757.           3.3  X.509 Authentication Framework
  2758.  
  2759.           This example illustrates use of the GSS-API in conjunction
  2760.           with public-key mechanisms, consistent with the X.509 Directory
  2761.           Authentication Framework.
  2762.  
  2763.           The GSS_Acquire_cred()  call establishes a credentials struc-
  2764.           ture, making the client's private key accessible for use on
  2765.           behalf of the client.
  2766.  
  2767.           The client calls GSS_Init_sec_context(),  which interrogates
  2768.           the Directory to acquire (and validate) a chain of public-key
  2769.           certificates, thereby collecting the public key of the service.
  2770.           The certificate validation operation determines that suitable
  2771.           signatures were applied by trusted authorities and that those
  2772.           certificates have not expired. GSS_Init_sec_context()  generates
  2773.           a secret key for use in per-message protection operations on
  2774.           the context, and enciphers that secret key under the service's
  2775.           public key.
  2776.  
  2777.           The enciphered secret key, along with an authenticator quantity
  2778.           signed with the client's private key, is included in the out-
  2779.           put_token from GSS_Init_sec_context().  The output_token also
  2780.           carries a certification path, consisting of a certificate chain
  2781.           leading from the service to the client; a variant approach would
  2782.  
  2783.           56  Document Expiration: 31 May 1993
  2784.  
  2785.  
  2786.  
  2787.  
  2788.                Generic Security Service API: Internet-Draft: November 1992
  2789.                       Common Authentication Technology WG: John Linn (DEC)
  2790.  
  2791.  
  2792.           defer this path resolution to be performed by the service in-
  2793.           stead of being asserted by the client. The client application
  2794.           sends the output_token to the service.
  2795.  
  2796.           The service passes the received token as the input_token ar-
  2797.           gument to GSS_Accept_sec_context().  GSS_Accept_sec_context()
  2798.           validates the certification path, and as a result determines a
  2799.           certified binding between the client's distinguished name and
  2800.           the client's public key. Given that public key, GSS_Accept_sec_
  2801.           context()  can process the input_token's authenticator quantity
  2802.           and verify that the client's private key was used to sign the
  2803.           input_token. At this point, the client is authenticated to the
  2804.           service. The service uses its private key to decipher the en-
  2805.           ciphered secret key provided to it for per-message protection
  2806.           operations on the context.
  2807.  
  2808.           The client calls GSS_Sign()  or GSS_Seal() on a data mes-
  2809.           sage, which causes per-message authentication, integrity, and
  2810.           (optional) confidentiality facilities to be applied to that
  2811.           message. The service uses the context's shared secret key to
  2812.           perform corresponding GSS_Verify()  and GSS_Unseal() calls.
  2813.  
  2814.           4  Related Activities
  2815.  
  2816.           In order to implement the GSS-API atop existing, emerging, and
  2817.           future security mechanisms:
  2818.  
  2819.           o  object identifiers must be assigned to candidate GSS-API
  2820.              mechanisms and the name types which they support
  2821.  
  2822.           o  concrete data element formats must be defined for candidate
  2823.              mechanisms (encapsulation within the mechanism-independent
  2824.              token format definition in Appendix B of this document is
  2825.              recommended to mechanism designers)
  2826.  
  2827.           Calling applications must implement formatting conventions which
  2828.           will enable them to distinguish GSS-API tokens from other data
  2829.           carried in their application protocols.
  2830.  
  2831.                                       Document Expiration: 31 May 1993  57
  2832.  
  2833.  
  2834.  
  2835.  
  2836.           Generic Security Service API: Internet-Draft: November 1992
  2837.           Common Authentication Technology WG: John Linn (DEC)
  2838.  
  2839.  
  2840.           Concrete language bindings are required for the programming en-
  2841.           vironments in which the GSS-API is to be employed; such bindings
  2842.           for the C language are available in an associated Internet-
  2843.           Draft.
  2844.  
  2845.  
  2846.           5  Acknowledgments
  2847.  
  2848.           This proposal is the result of a collaborative effort. Acknowl-
  2849.           edgments are due to the many members of the IETF Security Area
  2850.           Advisory Group (SAAG) and the Common Authentication Technology
  2851.           (CAT) Working Group for their contributions at meetings and by
  2852.           electronic mail. Acknowledgments are also due to Kannan Ala-
  2853.           gappan, Doug Barlow, Bill Brown, Cliff Kahn, Charlie Kaufman,
  2854.           Butler Lampson, Richard Pitkin, Joe Tardo, and John Wray of
  2855.           Digital Equipment Corporation, and John Carr, John Kohl, Jon
  2856.           Rochlis, Jeff Schiller, and Ted T'so of MIT and Project Athena.
  2857.           Joe Pato and Bill Sommerfeld of HP/Apollo, Walt Tuvell of OSF,
  2858.           and Bill Griffith and Mike Merritt of AT&T, provided inputs
  2859.           which helped to focus and clarify directions. Precursor work
  2860.           by Richard Pitkin, presented to meetings of the Trusted Systems
  2861.           Interoperability Group (TSIG), helped to demonstrate the value
  2862.           of a generic, mechanism-independent security service API.
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.           58  Document Expiration: 31 May 1993
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.                                      APPENDIX  A
  2893.  
  2894.  
  2895.                            PACS AND AUTHORIZATION SERVICES
  2896.  
  2897.  
  2898.           Consideration has been given to modifying the GSS-API service
  2899.           interface to recognize and manipulate Privilege Attribute Cer-
  2900.           tificates (PACs) as in ECMA 138, carrying authorization data as
  2901.           a side effect of establishing a security context, but no such
  2902.           modifications have been incorporated at this time. This appendix
  2903.           provides rationale for this decision and discusses compatibility
  2904.           alternatives between PACs and the GSS-API which do not require
  2905.           that PACs be made visible to GSS-API callers.
  2906.  
  2907.           Existing candidate mechanism types such as Kerberos and X.509
  2908.           do not incorporate PAC manipulation features, and exclusion of
  2909.           such mechanisms from the set of candidates equipped to fully
  2910.           support the GSS-API seems inappropriate. Inclusion (and GSS-
  2911.           API visibility) of a feature supported by only a limited number
  2912.           of mechanisms could encourage the development of ostensibly
  2913.           portable applications which would in fact have only limited
  2914.           portability.
  2915.  
  2916.           The status quo, in which PACs are not visible across the GSS-API
  2917.           interface, does not preclude implementations in which PACs are
  2918.           carried transparently, within the tokens defined and used for
  2919.           certain mech_types, and stored within peers' credentials and
  2920.           context-level data structures. While invisible to API callers,
  2921.           such PACs could be used by operating system or other local
  2922.           functions as inputs in the course of mediating access requests
  2923.           made by callers. This course of action allows dynamic selection
  2924.           of PAC contents, if such selection is administratively-directed
  2925.           rather than caller-directed.
  2926.  
  2927.                                        PACs and Authorization Services  59
  2928.  
  2929.  
  2930.  
  2931.  
  2932.           Generic Security Service API: Internet-Draft: November 1992
  2933.           Common Authentication Technology WG: John Linn (DEC)
  2934.  
  2935.  
  2936.           In a distributed computing environment, authentication must
  2937.           span different systems; the need for such authentication pro-
  2938.           vides motivation for GSS-API definition and usage. Heterogeneous
  2939.           systems in a network can intercommunicate, with globally au-
  2940.           thenticated names comprising the common bond between locally
  2941.           defined access control policies. Access control policies to
  2942.           which authentication provides inputs are often local, or spe-
  2943.           cific to particular operating systems or environments. If the
  2944.           GSS-API made particular authorization models visible across its
  2945.           service interface, its scope of application would become less
  2946.           general. The current GSS-API paradigm is consistent with the
  2947.           precedent set by Kerberos, neither defining the interpretation
  2948.           of authorization-related data nor enforcing access controls
  2949.           based on such data.
  2950.  
  2951.           The GSS-API is a general interface, whose callers may reside
  2952.           inside or outside any defined TCB or NTCB boundaries. Given this
  2953.           characteristic, it appears more realistic to provide facilities
  2954.           which provide "value-added" security services to its callers
  2955.           than to offer facilities which enforce restrictions on those
  2956.           callers. Authorization decisions must often be mediated below
  2957.           the GSS-API level in a local manner against (or in spite of)
  2958.           applications, and cannot be selectively invoked or omitted
  2959.           at those applications' discretion. Given that the GSS-API's
  2960.           placement prevents it from providing a comprehensive solution
  2961.           to the authorization issue, the value of a partial contribution
  2962.           specific to particular authorization models is debatable.
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.           60  PACs and Authorization Services
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.                                      APPENDIX  B
  2989.  
  2990.  
  2991.                          MECHANISM-INDEPENDENT TOKEN FORMAT
  2992.  
  2993.  
  2994.           This appendix specifies a mechanism-independent level of en-
  2995.           capsulating representation for the initial token of a GSS-API
  2996.           context establishment sequence, incorporating an identifier
  2997.           of the mechanism type to be used on that context. Use of this
  2998.           format (with ASN.1-encoded data elements represented in BER,
  2999.           constrained in the interests of parsing simplicity to the Dis-
  3000.           tinguished Encoding Rule (DER) BER subset defined in X.509,
  3001.           clause 8.7) is recommended to the designers of GSS-API imple-
  3002.           mentations based on various mechanisms, so that tokens can be
  3003.           interpreted unambiguously at GSS-API peers. There is no require-
  3004.           ment that the mechanism-specific innerContextToken, innerMs-
  3005.           gToken, and sealedUserData data elements be encoded in ASN.1
  3006.           BER.
  3007.  
  3008.                -- optional top-level token definitions to
  3009.                -- frame different mechanisms
  3010.  
  3011.                GSS-API DEFINITIONS ::=
  3012.  
  3013.                BEGIN
  3014.  
  3015.                MechType ::= OBJECT IDENTIFIER
  3016.                -- data structure definitions
  3017.  
  3018.                -- callers must be able to distinguish among
  3019.                -- InitialContextToken, SubsequentContextToken,
  3020.                -- PerMsgToken, and SealedMessage data elements
  3021.                -- based on the usage in which they occur
  3022.  
  3023.                                     Mechanism-Independent Token Format  61
  3024.  
  3025.  
  3026.  
  3027.  
  3028.           Generic Security Service API: Internet-Draft: November 1992
  3029.           Common Authentication Technology WG: John Linn (DEC)
  3030.  
  3031.  
  3032.                InitialContextToken ::=
  3033.                -- option indication (delegation, etc.) indicated within
  3034.                -- mechanism-specific token
  3035.                [APPLICATION 0] IMPLICIT SEQUENCE {
  3036.                        thisMech MechType,
  3037.                        innerContextToken ANY DEFINED BY thisMech
  3038.                           -- contents mechanism-specific
  3039.                        }
  3040.  
  3041.                SubsequentContextToken ::= innerContextToken ANY
  3042.                -- interpretation based on predecessor InitialContextToken
  3043.  
  3044.                PerMsgToken ::=
  3045.                -- as emitted by GSS_Sign and processed by GSS_Verify
  3046.                        innerMsgToken ANY
  3047.  
  3048.                SealedMessage ::=
  3049.                -- as emitted by GSS_Seal and processed by GSS_Unseal
  3050.                -- includes internal, mechanism-defined indicator
  3051.                -- of whether or not encrypted
  3052.                        sealedUserData ANY
  3053.  
  3054.                END
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.           62  Mechanism-Independent Token Format
  3072.